PHP, функция mail
Функция mail в php имеет несколько моментов, про которые нужно помнить.
mail($email_to, '=?UTF-8?B?'.base64_encode($email_subj).'?=', $email_body, 'From: robot@site.com' . "\n" . 'Content-type: text/html; charset=utf-8' . "\n");
Тему письма стоит закодировать, иначе она может некорректно распознаваться почтовым клиентом:
'=?UTF-8?B?'.base64_encode($email_subj).'?='
В заголовках стоит указать заголовок From, а также тип и кодировку содержимого:
'From: robot@site.com' . "\n" . 'Content-type: text/html; charset=utf-8' . "\n"
Можно достаточно просто приложить файл к письму, не обязательно тянуть за собой какие-то библиотеки:
$f = fopen($filename, "rb"); $uniq = strtoupper(uniqid(time())); $head = "From: $from\n"; $head .= "Mime-Version: 1.0\n"; $head .= "Content-Type:multipart/mixed;"; $head .= "boundary=\"----------".$uniq."\"\n\n"; $body = "------------".$uniq."\nContent-Type:text/html; charset=utf-8\n"; $body .= "Content-Transfer-Encoding: 8bit\n\n$text\n\n"; $body .= "------------".$uniq."\n"; $body .= "Content-Type: application/octet-stream;"; $body .= "name=\"".basename($filename)."\"\n"; $body .= "Content-Transfer-Encoding:base64\n"; $body .= "Content-Disposition:attachment;"; $body .= "filename=\"".basename($filename)."\"\n\n"; $body .= chunk_split(base64_encode(fread($f, filesize($filename))))."\n";
Здесь $filename - отправляемый файл, $from - адрес отправителя, $text - текст самого письма.
Переменные $head и $body - заголовки и тело письма соответственно.
Еще нет отзывов
Идет загрузка формы...