Отправка писем на php. Сборник рецептов

Отправка писем в php осуществляется с помощью функции mail()
mail(to, subject, message, mailheaders);

to - емайл получателя
subject - заголовок письма
message - текст письма, сообщение
mailheaders - почтовые заголовки

Отправка обычного текстового письма
Это самый простой способ отправки писем. Вы просто указываете емайл получателя, отправителя и формат text/plain в заголовке. Далее идет пример
<?php
$to = "rockbattle@mail.ru"; // емайл получателя

$subject = "Проверка отправки писем"; // тема письма

$message = "Здравствуйте Если вы читаете это письмо значит все ок Почтовый робот"; // текст сообщения

$mailheaders = "Content-type:text/plain;charset=windows-1251rn"; // почтовый заголовок, указывает формат письма - текстовый и кодировку

$mailheaders .= "From: SiteRobot <noreply@siterobot.ru>rn"; // почтовый заголовок, указывает емайл отправителя

$mailheaders .= "Reply-To: noreply@siterobot.rurn"; // почтовый заголовок, указывает емайл для ответа // лучше если емайл для ответа совпадает с емайлом отправителя, иначе некоторые почтовые сервисы могут классифицировать письмо как спам

mail($to, $subject, $message, $mailheaders); // отправляем письмо

Отправка html-письма, в которое можно вставлять таблицы, рисунки, различные шрифты, стили оформления
Отправка писем в html формате почти ничем не отличается от отправки писем в текстовом формате. В заголовке вы указываете формат письма text/html а в самом письме вместо обычного текста помещаете html-код.

Рассмотрим на примере
<?php
$to = "rockbattle@mail.ru"; 
// емайл получателя

$subject = "Проверка отправки писем"; 
// тема письма

$message = "Здравствуйте<br><br>Если вы это читаете значит все ок <br><br>Почтовый робот "; 
// текст сообщения, здесь вы можете вставлять таблицы, рисунки, заголовки, оформление цветом и т.п.
$mailheaders = "Content-type:text/html;charset=windows-1251rn"; 
// формат письма html

$mailheaders .= "From: SiteRobot <noreply@siterobot.ru>rn"; 
$mailheaders .= "Reply-To: noreply@siterobot.rurn"; 
// емайл отправителя и емайл для ответа

mail($to, $subject, $message, $mailheaders);
// отправляем письмо

?>

Отправка письма с вложением
Чтобы прикрепить файл к письму потребуется немного более длинный код, но это тоже довольно просто. В приведенном далее коде пропишите имя вашего файла который вы хотите отправить а также его расположение
<?php 
$to = "rockbattle@mail.ru"; 
// емайл получателя

$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 <noreply@siterobot.ru>rn"; 
$mailheaders .= "Reply-To: noreply@siterobot.rurn";


$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 = "rockbattle@mail.ru"; 
// емайл получателя

$subject = "Проверка отправки писем"; 
// тема письма

$message = "Здравствуйте
Если вы читаете это письмо значит все ок
Почтовый робот"; 
// текст сообщения

$mailheaders = "Content-type:text/plain;charset=windows-1251rn"; 
$mailheaders .= "From: SiteRobot <noreply@siterobot.ru>rn"; 
$mailheaders .= "Reply-To: noreply@siterobot.rurn"; 
// почтовые заголовки

$mailheaders .= "Bcc: email1@mail.rurn"; 
$mailheaders .= "Bcc: email2@mail.rurn"; 
$mailheaders .= "Bcc: email3@mail.rurn"; 
// заголовков Bcc может быть неограниченное количество

mail($to, $subject, $message, $mailheaders);
// отправляем письмо

?>
Теги:
Отправка писем, аттач
Добавлено: 27 Мая 2018 07:22:36 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...