|
|
|
| Доброго времени суток!
У меня такая проблема:
При отправке писем на почту на mail.ru допустим в кодировках любых UTF-8, Win-1251, KOI8-R при просмотре через браузер всё нормально показывается, но в Outlook'е показывается всё в KOI8-R и получается фигня, и даже когда кодировку письма ставлю KOI8-R всё приходит в ней но тоже получается фигня, в чём может быть проблема? | |
|
|
|
|
|
|
|
для: Trivium
(25.08.2008 в 14:35)
| | Если Вы не указываете кодировку - жаловаться по меньшей мере странно.
Равно как и если Вы указываете koi8-r , а текст на самом деле в windows-1251.
А вот если текст у Вас в koi8-r и В Content-type стоит то же самое - тогда странно.
Впрочем, и это объяснимо, если Вы при этом не применяете адекватный Content-Transfer-Encoding .
Надо смотреть код. | |
|
|
|
|
|
|
|
для: Trianon
(25.08.2008 в 15:09)
| |
mail('lalala@mail.ru', 'Тема письма, 'Текст письма', 'MIME-Version: 1.0'."\r\n".'Content-type: text/html;charset=Windows-1251' . "\r\n".' To: Вася Пупочкин <lalala@mail.ru>' . "\r\n"
.'From: some site <no-reply@somesite.com>' . "\r\n");
|
| |
|
|
|
|
|
|
|
для: Trivium
(25.08.2008 в 15:23)
| | пробел между text/html; и charset= пожалели?
Поставьте. Кстати, почему html, а не plain?
И как я уже сказал, лучше бы текст письма завернуть в base64 (в него проще) и выставить соответствующий Content-Transfer-Encoding. | |
|
|
|
|
|
|
|
для: Trianon
(25.08.2008 в 15:43)
| | >пробел между text/html; и charset= пожалели?
Ну там он в принципе не обязателен)
>Поставьте. Кстати, почему html, а не plain?
Потому-что в тексте есть тэг a
>
>И как я уже сказал, лучше бы текст письма завернуть в base64 (в него проще) и выставить соответствующий Content-Transfer-Encoding.
в смысле как это сделать? | |
|
|
|
|
|
|
|
для: Trivium
(25.08.2008 в 16:11)
| | >>пробел между text/html; и charset= пожалели?
>Ну там он в принципе не обязателен)
тут можно было бы поспорить, но мне лень.
>>Поставьте. Кстати, почему html, а не plain?
>Потому-что в тексте есть тэг a
если есть тег а, то еще должен быть как минимум тег html и тег body :)
>>И как я уже сказал, лучше бы текст письма завернуть в base64 (в него проще) и выставить соответствующий Content-Transfer-Encoding.
>в смысле как это сделать?
$encoded_text = chunk_split(base64_encode($text));
|
ну и
Content-Transfer-Encoding: base64\r\n
| в строку заголовка | |
|
|
|
|
|
|
|
для: Trivium
(25.08.2008 в 15:23)
| | И все равно в таком случае тема будет нечитаемой, ей то кодировку не задали... | |
|
|
|
|
|
|
|
для: coba
(25.08.2008 в 17:38)
| | А вы ей и не зададите. Если даже перед темой вы пошлете заголовок указывающий на кодировку, то еще не факт, что вы прочитаете ее, если она на русском писана. | |
|
|
|
|
|
|
|
для: sim5
(25.08.2008 в 17:40)
| | >А вы ей и не зададите.
Почему? | |
|
|
|
|
|
|
|
для: Trianon
(25.08.2008 в 17:54)
| | Я имел ввиду, что передача такого же заголовка как и для сообщения, задачи не решает - не на всех почтовых клиентах и серверах это прокатывает. А вот кодирование темы с указанием кодировки, это и есть решение. | |
|
|
|
|
|
|
|
для: sim5
(25.08.2008 в 17:40)
| | Т.е. как это не зададите?
Вот самый простой пример
'=?Windows-1251?Q?Моя тема?=' | |
|
|
|
|
|
|
|
для: coba
(25.08.2008 в 17:54)
| | >Вот самый простой пример
>'=?Windows-1251?Q?Моя тема?='
угу. простой пример с ошибкой. | |
|
|
|
|
|
|
|
для: Trianon
(25.08.2008 в 18:02)
| | Вы имеете заглавную букву W? | |
|
|
|
|
|
|
|
для: coba
(25.08.2008 в 18:15)
| | Я имею в виду (в порядке уменьшения значимости)
а) незакодированный пробел, встретившийся в кодовом слове
б) незакодированные символы за рамками набора ASCII
ну и если желаете в) заглавную букву W :) хотя я не припоминаю такого ограничения... | |
|
|
|
|
|
|
|
для: Trianon
(25.08.2008 в 18:19)
| | Перелопатил RFC2047 и не нашел жесткого указания на замену пробела, нашел только пожеляния
4.2. The "Q" encoding
The "Q" encoding is similar to the "Quoted-Printable" content-
transfer-encoding defined in RFC 2045. It is designed to allow text
containing mostly ASCII characters to be decipherable on an ASCII
terminal without decoding.
(1) Any 8-bit value may be represented by a "=" followed by two
hexadecimal digits. For example, if the character set in use
were ISO-8859-1, the "=" character would thus be encoded as
"=3D", and a SPACE by "=20". (Upper case should be used for
hexadecimal digits "A" through "F".)
(2) The 8-bit hexadecimal value 20 (e.g., ISO-8859-1 SPACE) may be
represented as "_" (underscore, ASCII 95.). (This character may
not pass through some internetwork mail gateways, but its use
will greatly enhance readability of "Q" encoded data with mail
readers that do not support this encoding.) Note that the "_"
always represents hexadecimal 20, even if the SPACE character
occupies a different code position in the character set in use.
(3) 8-bit values which correspond to printable ASCII characters other
than "=", "?", and "_" (underscore), MAY be represented as those
characters. (But see section 5 for restrictions.) In
particular, SPACE and TAB MUST NOT be represented as themselves
within encoded words. | |
|
|
|
|
|
|
|
для: coba
(25.08.2008 в 18:48)
| | Третий абзац собственной выдержки прочтите - найдете требование. | |
|
|
|
|
|
|
|
для: Trianon
(25.08.2008 в 19:00)
| | may be это не значит должны быть
may be это могут быть!!! | |
|
|
|
|
|
|
|
для: coba
(25.08.2008 в 19:23)
| | correspond to printable ASCII characters ... MAY BE
In particular, SPACE and TAB MUST NOT be represented as themselves within encoded words.
PS. ... никаких моих сил не хватает... | |
|
|
|
|
|
|
|
для: Trianon
(25.08.2008 в 19:25)
| | Хорошо, сдаюсь, убедили. | |
|
|
|
|
|
|
|
для: coba
(25.08.2008 в 17:38)
| | >И все равно в таком случае тема будет нечитаемой, ей то кодировку не задали...
т.е. если заголовок оформили с нарушением RFC .
Конечно. | |
|
|
|
|
|
|
|
для: Trianon
(25.08.2008 в 17:53)
| | Теперь тема нормальная а тело такое же как было...
Поставил тему '=?Windows-1251?Q?Тема письма?='
Текст: chunk_split(base64_encode($text)) и пробовал '=?Windows-1251?Q?'.$text.'?='
Заголовки: 'MIME-Version: 1.0'."\r\n".'Content-type: text/html; Charset=Windows-1251'."\r\n".'Content-Transfer-Encoding: base64 ' . "\r\n".' To: AAA <lalala@mail.ru>' . "\r\n"
.'From: bububu <bububu@somesite.com>' . "\r\n"
Что можно с текстом сделать ещё? | |
|
|
|
|
|
|
|
для: Trivium
(25.08.2008 в 19:05)
| | >Поставил тему '=?Windows-1251?Q?Тема письма?='
я уже объяснил, почему так нельзя.
>Что можно с текстом сделать ещё?
Не видно здесь текста. Да и заголовка не видно - одни обрывки.
Может Вы покажете, что у Вас получилось? Чего гадать-то? | |
|
|
|
|
|
|
|
для: Trianon
(25.08.2008 в 19:21)
| | >>Поставил тему '=?Windows-1251?Q?Тема письма?='
>я уже объяснил, почему так нельзя.
Ну может так и нельзя, но факт тот что работает)))
>
>>Что можно с текстом сделать ещё?
>Не видно здесь текста. Да и заголовка не видно - одни обрывки.
>Может Вы покажете, что у Вас получилось? Чего гадать-то?
Ну получился текст в KOI8-R, точно тот же текст в Win-1251 но отображается в KOI8 и его не видно... ничего не помогает | |
|
|
|
|
|
|
|
для: Trivium
(25.08.2008 в 20:11)
| | всем спасиба всё заработало) | |
|
|
|