Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Функция mail() кодировка на сервисе mail.ru (http://forum.oszone.net/showthread.php?t=246372)

Колючка 07-11-2012 09:17 2020614

Функция mail() кодировка на сервисе mail.ru
 
Добрый день.
Имеется код для отправки почтовых сообщений с вложенным файлом. На сервисы yandex, gmail, pochta письма приходят и отображаются корректно, на сервис mail письмо приходит со знаками вопросов вместо русских букв в открытом письме,









при этом в кратком обзоре русские буквы отображаются верно.









Подскажите, пожалуйста, что необходимо исправить в коде, чтобы на всех почтовых сервисах письма отображались корректно?

Код:

<?php
  $filename = "text.txt"; //Имя файла для прикрепления
  $to = "mail@mail.ru";
  $from = "from@from.ru"; //От кого
  $subject = "Рус-тема"; //Тема
  $message = "Русский!"; //Текст письма
  $boundary = "---"; //Разделитель
  /* Заголовки */
  $headers = "From: $from\nReply-To: $from\n";
  $headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"";
  $body = "--$boundary\n";
  /* Присоединяем текстовое сообщение */
  $body .= "Content-type: text/html; charset='utf-8'\n";
  $body .= "Content-Transfer-Encoding: quoted-printablenn";
  $body .= "Content-Disposition: attachment; filename==?utf-8?B?".base64_encode($filename)."?=\n\n";
 
  $body .= $message;
 
  $body .= "\n";
  $body .= "--$boundary\n";
  $file = fopen($filename, "r"); //Открываем файл
  $text = fread($file, filesize($filename)); //Считываем весь файл
  fclose($file); //Закрываем файл
  /* Добавляем тип содержимого, кодируем текст файла и добавляем в тело письма */
  $body .= "Content-Type: application/octet-stream; name==?utf-8?B?".base64_encode($filename)."?=\n";
  $body .= "Content-Transfer-Encoding: base64\n";
  $body .= "Content-Disposition: attachment; filename==?utf-8?B?".base64_encode($filename)."?=\n\n";
  $body .= chunk_split(base64_encode($text))."\n";
  $body .= "--".$boundary ."--\n";
  mail($to, $subject, $body, $headers); //Отправляем письмо
?>



Время: 20:24.

Время: 20:24.
© OSzone.net 2001-