Отправляет email-рассылки с помощью сервиса Sendsay

[TC] PHP: Заголовки письма

Vande omentaina, Tiflocomp!
поступают у меня тут жалобы от читающих письма через Web-интерфейс
(наверное), что отсылаемые через скрипт письма идут крокозябрами
(квадратики, вопросики и прочая прелесть). И вот, захотел я поставить
кодировку Кои8-р. Но в результате у меня в Бате письма стали плохо
читаться, в частности, слово "Здравствуйте" отображается как
"гДПЮБЯРБСИРЕ". Конечно, Alt+5 (автоподбор кодировки) помогает, но сам
факт изрядно раздражает.
Вот заголовки, которые я передаю:
$headers="From: Администрация школы Гвирагон <kev***@g*****.ru>\r\n";
$headers.="Content-type: text/plain; charset=koi8-r";
Причём если в Бате показать заголовки, то вроде как оно даже
показывается, как надо.
Вопрос: что же тут не так может быть? Может, регистр букв, может,
кавычки отдельные надо?.. В общем, помогите, будь-ласка!
Спасибо!

Ответить   Anarendil Wed, 16 Sep 2009 21:24:49 +0300 (#906097)

 

Ответы:

Андрей, доброго тебе здоровья!

Посмотри учебный скрипт отправки письма в кодировке koi8-r, может чего
пригодится:

$UserName="Имя нового подписчика";
$AdminName1="Администратор сайта";
$AdminName2=convert_cyr_string($AdminName1, "w", "k");
$header="From: $AdminName2 <adm***@m*****.ru>";
$header.="Content-type: text/plain; charset=\"koi8-r\"";
$subject="Предупреждение подписчику";
$msg="Здравствуйте, $UserName!\n\n
Вы стали подписчиком нашей рассылки\n\n
С уважением, $AdminName1!";

$subject=convert_cyr_string($subject,"w","k");
$msg=convert_cyr_string($msg,"w","k");

mail("myna***@s*****.ru", $subject, $msg, $header);
echo "письмо отправлено в кодировке koi8-r";

С уважением,
Грызунов Александр. Самара.

Ответить   "eastreb" Thu, 17 Sep 2009 11:24:12 +0400 (#906208)

 

Vande omentaina, eastreb!

попробую ещё закавычить кодировку и перевести всё с помощью
convert_cyr_string, спасибо!
А разве не нужно в конце первого заголовка \r\n ставить?

Ответить   Anarendil Thu, 17 Sep 2009 11:27:57 +0300 (#906269)

 

Anarendil:

По-моему, не имеет особого значения, в какой именно кодировке посылать:
koi8-r, windows-1251, utf-8. Главное, чтобы письмо было оформлено в
соответствии с MIME. Это значит, что заголовки должны быть закодированы,
как указано в RFC 2047. Если в PHP нет средств для работы с MIME, то Вы
просто можете написать письмо с нужными заголовками в бате, отправить
самому себе, открыть письмо в текстовом редакторе и скопировать оттуда
_закодированные_ заголовки.

Для тела письма укажите по крайней мере эти заголовки:

MIME-Version: 1.0
Content-Type: text/plain; charset=windows-1251
Content-Transfer-Encoding: 8bit

Кодировка должна отвечать реальному содержимому тела письма. То есть,
если Ваш скрипт в кодировке windows-1251, и Вы ничего не перекодируете
то так и укажите. Кодировка тела не обязана совпадать с кодировкой
заголовков.

Ответить   Дмитрий Падучих Thu, 17 Sep 2009 13:32:53 +0600 (#906230)