- Подробности
-
Категория: PHP. Сеть. Почта
Отправка писем на php. Сборник рецептов
Отправка писем в php осуществляется с помощью функции mail()
mail(to, subject, message, mailheaders);
to — емайл получателя
subject — заголовок письма
message — текст письма, сообщение
mailheaders — почтовые заголовки
Отправка обычного текстового письма
Это самый простой способ отправки писем. Вы просто указываете емайл получателя, отправителя и формат text/plain в заголовке. Далее идет пример
<?php
$to = "Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.";
$subject = "Проверка отправки писем";
// тема письма
$message = "Здравствуйте
Если вы читаете это письмо значит все ок
Почтовый робот";
// текст сообщения
$mailheaders = "Content-type:text/plain;charset=windows-1251rn";
// почтовый заголовок, указывает формат письма — текстовый и кодировку
$mailheaders .= "From: SiteRobot <Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.>rn";
$mailheaders .= "Reply-To: Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.";
mail($to, $subject, $message, $mailheaders);
// отправляем письмо
?>
Отправка html-письма, в которое можно вставлять таблицы, рисунки, различные шрифты, стили оформления
Отправка писем в html формате почти ничем не отличается от отправки писем в текстовом формате. В заголовке вы указываете формат письма text/html а в самом письме вместо обычного текста помещаете html-код.
Рассмотрим на примере
<?php
$to = "Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.";
$subject = "Проверка отправки писем";
// тема письма
$message = "Здравствуйте<br><br>Если вы это читаете значит все ок <br><br>Почтовый робот ";
// текст сообщения, здесь вы можете вставлять таблицы, рисунки, заголовки, оформление цветом и т.п.
$mailheaders = "Content-type:text/html;charset=windows-1251rn";
// формат письма html
$mailheaders .= "From: SiteRobot <Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.>rn";
mail($to, $subject, $message, $mailheaders);
// отправляем письмо
?>
Отправка письма с вложением
Чтобы прикрепить файл к письму потребуется немного более длинный код, но это тоже довольно просто. В приведенном далее коде пропишите имя вашего файла который вы хотите отправить а также его расположение
<?php
$to = "Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.";
$subject = "Письмо с вложением";
// тема письма
$message = "Здравствуйте
Если с этим письмом вы получили прикрепленный файл значит все ок
Почтовый робот ";
// текст сообщения
$filename = "file.doc";
// название файла
$filepath = "files/file.doc";
// месторасположение файла
// письмо с вложением состоит из нескольких частей, которые разделяются разделителем
$boundary = "--".md5(uniqid(time()));
// генерируем разделитель
$mailheaders = "MIME-Version: 1.0n";
$mailheaders .="Content-Type: multipart/mixed; boundary="$boundary"n";
// разделитель указывается в заголовке в параметре boundary
$mailheaders .= "From: SiteRobot <Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.>rn";
$multipart = "--$boundaryn";
$multipart .= "Content-Type: text/plain; charset=windows-1251nn";
$multipart .= "$messagenn";
// первая часть само сообщение
$fp = fopen($filepath,"r");
if (!$fp)
{
print "Файл не может быть прочитан";
exit();
}
$file = fread($fp, filesize($filepath));
fclose($fp);
// чтение файла
$message_part = "--$boundaryn";
$message_part .= "Content-Type: application/octet-stream; name = "".$filename.""n";
$message_part .= "Content-Transfer-Encoding: base64n";
$message_part .= "Content-Disposition: attachment; filename = "".$filename.""nn";
$message_part .= chunk_split(base64_encode($file))."n";
// второй частью прикрепляем файл, можно прикрепить два и более файла
$multipart .= $message_part;
mail($to,$subject,$multipart,$mailheaders);
// отправляем письмо
?>
Отправка писем сразу нескольким адресатам
Чтобы отправить письмо сразу нескольким адресатам, лучше всего использовать заголовок Bcc: который отправляет копию письма на указанный емайл
Например
<?php
$to = "Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.";
$subject = "Проверка отправки писем";
// тема письма
$message = "Здравствуйте
Если вы читаете это письмо значит все ок
Почтовый робот";
// текст сообщения
$mailheaders .= "From: SiteRobot <Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.>rn";
$mailheaders .= "Bcc: Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.";
mail($to, $subject, $message, $mailheaders);
// отправляем письмо
?>