PHP письма приходят в кракозябрах. Заголовок письма php mail() в кракозябрах

PHP письма приходят в кракозябрах. Заголовок письма php mail() в кракозябрах

Очень частая и неудобная ситуация, когда мы отправляем письмо за счет PHP mail, а оно приходит в кракозябрах. Может портиться как все письмо, так и его часть, например, тело или только заголовок. Все эти проблемы из-за неправильно выбранной кодировки.

Общие решения проблемы с кодировкой.
1а. Если письма отправляются в кодировке UTF-8, то переводим кодировку сайта в UTF-8. Если не помогает, то прописываем в самом начале страницы: <?php header("Content-Type: text/html; charset=utf-8");?> без лишних пробелов.

1б. Если письма отправляются в кодировке windows-1251, то переводим кодировку сайта в windows-1251 (ANSI). Также можно прописать в начале сайта <?php header("Content-Type: text/html; charset=windows-1251");?>

2. При отправке писем, можно попробавть использовать преобразователи кодировок на те переменные, которые передаются в письме: $text = iconv('utf-8', 'windows-1251', $text); или $text = iconv('windows-1251′', 'utf-8', $text);

3. Бывает, что приходит в письме только заголовок в кракозябрах, для этого изменяем его кодировку отдельно. Пример:
$to = 'admin@mail.ru';
$subject = '=?utf-8?B?'.base64_encode('Новое сообщение!').'?=';
$headers = 'From: =?UTF-8?B?' . base64_encode($name) . '?= <=?UTF-8?B?' . base64_encode($name) . "?=>\r\n";
$headers .= 'Return-path: <' . $email . ">\r\n";
$headers .= 'Content-type: text/plain; charset=utf-8' . "\r\n";
$headers .= 'Content-Transfer-Encoding: quoted-printable' . "\r\n\r\n";
$message = "Новый запрос!\n\nИмя: $name\n\nEmail: $email\n\nТелефон: $tel\n\n";
$mail = mail($to, $subject, $message, $headers);

 

ps Если Кодировка сайта UTF-8, а в заголовке письма и от кого приходят кракозябры, то меняем $subject = 'Новое сообщение!; на $subject = '=?utf-8?B?'.base64_encode('Новое сообщение!').'?=';

Не забывайте, что на главной странице, внизу всегда актуальный список программ-сервисов.

| | PHP письма приходят в кракозябрах. Заголовок письма php mail() в кракозябрах | Очень частая и неудобная ситуация, когда мы отправляем письмо за счет PHP mail, а оно приходит в кракозябрах. Может портиться как все письмо, так и ег |