Если вы пользуетесь форумами, социальными сетями, и прочими сервисами Рунета, то могли заметить письма со знаками вопроса в заголовках.
Такое происходит, если программист явно не указал кодировку в самом поле Subject в письме. Да, в поле Content-type кодировка явно стоит, но, засада вылазит, если заголовок пустили скажем в windows-1251 или utf-8 без предварительной обработки. Так как сайты в русском сегменте Сети в основном делают на PHP, а PHP явным образом не предполагает такой работы с электронной почтой, да и не предлагает программисту никаких дополнительных инструментов кроме функции mail(), то тому, кто пытается научить свои скрипты отсылать почтовые уведомления, следует правильно форматировать поле Subject.
Формат будет примерно такой:=?кодировка?способ кодирования?закодированный текст?=
Кодировка - обозначение кодировки, которую вы использовали("windows-1251", "koi8-r", "utf-8") .
Способ кодирования указывает, каким именно символы заголовка будут преобразованы в безопасный набор. Есть разные способы кодирования, как правило используют 2 способа: Quooted-Printable(обозначается буквой Q) и Base64(обозначается буквой B)
Примеры на PHP:
$subject = '=?utf-8?b?' . base64_encode($subject) . '?=';
Или, если Вы полностью перешли на UTF-8, можно воспользоваться функцией библиотеки mb_string - mb_encode_mimeheader():$subject = mb_encode_mimeheader($subject, 'UTF-8', 'B');
Таким образом, пользователь больше не увидит позорных знаков вопросов в письмах.
Комментарии
Супер информация, то что
Супер информация, то что нужно.
Только вот замечено, что в OutExp 2003 v 11.6568.6568 (SP2) в такой вариации
через base64 показывается не пойми что.
Кто знает в чем может быть проблема?
Да непойми что только в
Да непойми что только в windows-1251, В УТФ8 все нормально, поэтому это как вариант решения. Но все же хотелось как-то заставить Майкрософт понять и нужную кодировочку.
может строку кодировки
может строку кодировки неверную указали? :)