23 Декабря 2007 21:26

Осваиваем мыло в UTF-8

Про работу PHP

Точнее не осваиваем а уже освоено. Изначальная трабла: если слать мыло в любом чарсете и впихивать в сабжект и from корректно закодированные строки, то почтовик все равно выводит караказяблы. Изучение сырцов писем и чтение гуглев принесло решение проблемы. Да еще и чтоб соответствовать моде теперь мыло расходится в UTF-8.

Вот кодина которая корректно шлет мыло в UTF-8 и читается почтовиками нормально (проверено на mozilla firefox):

$from = "=?UTF-8?B?".base64_encode(iconv('windows-1251', 'UTF-8', $name))."?= <$email>";
$subj = "=?UTF-8?B?".base64_encode(iconv('windows-1251', 'UTF-8', $subj))."?=";
$text = iconv('windows-1251', 'UTF-8', $text);
mail($to, $subj, $text, "From: $from\r\nReply-To: $email\r\nMIME-Version: 1.0\r\nContent-type: text/plain; charset=UTF-8\r\n");

Особенность состоит в том, что для корректной читабельности в почтовиках приходится добавлять указание на кодировку (=?UTF-8?B? ... ?=) и base64_encode -- Encodes data with MIME base64. Теперь мыло расходится в UTF-8 и читается отлично 

Фильтр