кодировка сабжа письма

mulder

Guest
кодировка сабжа письма

Кто-нибудь сталкивался с такой проблемой:
когда создаешь сообщение для отправки с помощью mail()
в кодировке WIN как text/plain, то тело письма кодируется в указанной кодировке, а сабж кодируется в КОИ-8.

Если не указывать в заголовке кодировку вообще, то почтовый клиент по умолчанию ставит КОИ-8, и чтобы прочитать письмо надо каждый раз выбирать вручную нужную кодировку.

Если создавать письмо в text/html, проблем нет - сабж кодируется в той же кодировке что и тело сообщения, но тогда напряжно создавать отдельно чисто текстовую версию, создавать boundary...

Как это обойти? Можно ли контролировать кодировку сабжа или может есть какая-то функция которая переводит между различными кодировками?
Дома у меня Виндовая машина.
 

young

Новичок
По RFC в поле Sibject не может быть русских букв вообще.

Пиши вот в таком стиле

Subject:
=?koi8-r?b?9dfFxM/NzMXOycUgzyDOz9fPzSDP1NfF1MUgzsEg08/Pwt3FzsnFICfeydPMzyDTINDMwdfBwN3FyiDawdDR1M/KINcg08/P1NfF1NPXyckg0yDGz9LNwdTPzSBJRUVFJw==?=
 

mulder

Guest
А как получить такую строку? Особенно если сабж генерится динамически - например оповещение об ответе в форуме и я хочу в сабж поставить сабж топика в форуме.
Есть функции для перевода между кодировками?
 

Кром

Новичок
Пиши заголовок в самом тексте письма.
Content-type пиши первой строкой и сразу после Subject, т.е.
$message = "Content-Type: .....
From: .....
To: ....
Subject: ......
Content-Type: .......
И дальше текст пошел.";
 

Макс

Старожил PHPClub
PHP:
function cyr_subject($text) {
   $text = convert_cyr_string($text,"w","k");
   $text = base64_encode($text);
   return "=?koi8-r?B?".$text."?=";
}
.... 
mail($to, cyr_subject('тема письма'), $message, $headers);
 

Bloody

Guest
Кодировку сабжа можно контролировать, как описано выше, только вместо "=?koi8-r?B?" пиши, например "=?windows-1251?B?"

Ну и, кстати, хотя по RFC в сабже не может быть русских букв, однако очень многие почтовые клиенты (не могу сказать про все - не знаю...) понимают "=?windows-1251?Q?Текст сабжа русскими буквами?=" (quoted printable)...
 

mulder

Guest
А как перевести в quoted printable какой-то текст?
Например когда создаешь ХТМЛ письмо, и в заголовке указано quoted printable, то надо кавычки и знаки # заменять какими-то комбинациями.
И для чего вообще используется quoted printable?
base64, я так понимаю, это для кодирования бинарных файлов?...
 
Сверху