Создана некая форма на которой есть кнопка прикрепления файла.
После нажатия на вторую кнопку "отправить" сообщение уходит на заранее заданный e-mail.
Сообщение нормально читается как в самом web интерфейсе mail.ru, так и в почтовой программе TheBat!, но приходит кракозябрами в Microsoft Outlook 2010.
Подскажите, пожалуйста, что я написал не так и что нужно изменить в коде, чтобы Microsoft Outlook читал нормально письма? Заранее спасибо.
$picture = "";
// Если поле выбора вложения не пустое - закачиваем его на сервер
if (!empty($_FILES['mail_file']['tmp_name']))
{
// Закачиваем файл
$path = $_FILES['mail_file']['name'];
if (copy($_FILES['mail_file']['tmp_name'], $path)) $picture = $path;
}
// Вспомогательная функция для отправки почтового сообщения с вложением
function send_mail($to_mail, $subject, $html, $path)
{
$fp = fopen($path,"r");
if (!$fp)
{
print "Файл $path не может быть прочитан";
exit();
}
$file = fread($fp, filesize($path));
fclose($fp);
$boundary = "--".md5(uniqid(time())); // генерируем разделитель
include "includes/contacts.inc";
$headers = 'From: Агентство <'.$email1.'>' . "\r\n" .
'content-type: text/plain; charset="windows-1251"' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
$headers .= "MIME-Version: 1.0\n";
$headers .="Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
$multipart .= "--$boundary\n";
$multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n";
$multipart .= "$html\n\n";
$message_part = "--$boundary\n";
$message_part .= "Content-Type: application/octet-stream\n";
$message_part .= "Content-Transfer-Encoding: base64\n";
$message_part .= "Content-Disposition: attachment; filename = \"".$path."\"\n\n";
$message_part .= chunk_split(base64_encode($file))."\n";
$multipart .= $message_part."--$boundary--\n";
$subject = "Zakaz ".$code_zakaz."-".$predmet;
if(!mail($to_mail, $subject, $multipart, $headers))
{
echo "К сожалению, письмо не отправлено";
exit();
}
}
// Отправляем почтовое сообщение
if(empty($picture)) mail($to, $subject, $message);
else send_mail($to, $subject, $message, $picture);