Письмо с вложением. Attachment php mail.
← Назад в записки веб-программиста
Письмо с вложением. Attachment php mail.
Рассмотрим рабочий пример отправки письма с вложением(attachment) с помощью функции mail() php. Для отправки обычного письма достаточно указать в функции mail отправителя, получателя, текст письма, кодировку. Чтобы отправить письмо с вложенным файлом, необходимо кроме текст сообщения и адресата указывать путь к необходимому файлу с нужным набором настроек.
Поэтому мы решили разместить заметочку с рабочим кодом отправки письма с вложенным файлом.
Сначала объявляем функцию, которая будет отправлять письмо:
//функция отправки сообщения с вложенным файлом function mail_attachment($filename, $path, $mailto, $from_mail, $from_name, $replyto, $subject, $message) { $file = $path.$filename; $file_size = filesize($file); $handle = fopen($file, "r"); $content = fread($handle, $file_size); fclose($handle); $content = chunk_split(base64_encode($content)); $uid = md5(uniqid(time())); $name = basename($file); $header = "From: ".$from_name." <".$from_mail.">\r\n"; $header .= "Reply-To: ".$replyto."\r\n"; $header .= "MIME-Version: 1.0\r\n"; $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n"; $header .= "This is a multi-part message in MIME format.\r\n"; $header .= "--".$uid."\r\n"; $header .= "Content-type:text/plain; charset=utf-8\r\n"; $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n"; $header .= $message."\r\n\r\n"; $header .= "--".$uid."\r\n"; $header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; // use different content types here $header .= "Content-Transfer-Encoding: base64\r\n"; $header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n"; $header .= $content."\r\n\r\n"; $header .= "--".$uid."--"; mail($mailto, $subject, "", $header); }
Теперь задаем массив получателей и прописываем отправителя, текст письма и абсолютный путь к файлу:
$mails = array('user1@mail.ru','user2@mail.ru'); //массив получателей $from="<admin@site.ru>"; //псевдоадрес отправителя foreach($mails as $mailsIt){ //отправляем каждому получателю $to_mail = $mailsIt; $my_file = 'file.pdf';//название файла $my_path = $_SERVER["DOCUMENT_ROOT"].'/files/'; //путь до папки с файлом $my_name = $from; $my_mail = 'admin@site.ru'; // email отправителя $my_replyto = ''; // копия $my_subject = 'Тема сообщения'; $my_message = 'Текст сообщения'; mail_attachment($my_file, $my_path, $to_mail, $my_mail, $my_name, $my_replyto, $my_subject, $my_message); }