Битая кодировка в письмах, отправленных через php-скрипт

NL
На сайте с 20.02.2016
Offline
31
n-l
425

Добрый день!

Проблема - не во всех письмах, отправленных РНР-скриптом, читается кириллица.

Подробности:

Письма, пришедшие на gmail, читаются без проблем при заходе через браузер на gmail.com , но могут не читаться при просмотре с некоторых мобильных устройств (с айфона не читаются, с андроида вроде нормально). Кроме того, не читаются с макбука - через его родную почтовую программу и при просмотре через Сафари. Вместо кириллицы непонятные буквы с точками над ними (((.

Письма, пришедшие на Yandex, Yahoo - весь русский текст воспроизводится в виде знаков вопроса.

код отправки:


$msg = "\n Здравствуйте! \r\n
Вы получили это письмо, так как Ваш e-mail был \r\n
использован на сайте xxxxx.RU";
$subj = "Подтверждение";
$headers = array();
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/plain; charset=UTF-8';
$headers[] = 'From: RENES <INFO@xxxxx.RU>';
mail($user_email, $subj, $msg, implode("\r\n", $headers));

Доп. информация:

Все страницы сайта сделаны в cp_1251:


<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

php 5.4.45

На хосте выставлено (на всякий случай - не знаю важно ли это ): exif.encode_unicode ISO-8859-15

Проблем с отображением кириллицы на сайте никогда не было.

Что нужно поправить?

Возможно ли решить проблему корректной кодировки текста писем без переделки всего сайта под кодировку utf-8 (очень бы не хотелось).

Заранее благодарен.

Samail
На сайте с 10.05.2007
Offline
328
#1

$headers[] = 'Content-type: text/plain; charset=UTF-8';

поменяй на

$headers[] = 'Content-type: text/plain; charset=windows-1251';
S
На сайте с 30.09.2016
Offline
459
#2
n-l:
Все страницы сайта сделаны в cp_1251:

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

Это не имеет никакого значения.

n-l:
Возможно ли решить проблему корректной кодировки текста писем без переделки всего сайта под кодировку utf-8
Сам скрипт отправки писем перекодируй в utf-8.
Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
E
На сайте с 01.10.2017
Offline
27
#3

$msg, $subj не закодированы. Попробуйте добавить хотя бы заголовок

Content-Transfer-Encoding: 8bit

и текст $subj написать в 7-битной кодировке, т.е. по-английски.

Исходный файл, конечно, перекодируйте. И что это за жонглирование с \n и \r\n в $msg? Оставьте только второй вариант. Для 8bit это может быть важно.

---------- Добавлено 02.05.2020 в 10:28 ----------

Или оставьте кодировку исходного файла прежней и воспользуйтесь инструкцией Samail-а с учетом моих рекомендаций.

ЗАцени домен (https://vk.com/zadomen)
SocFishing
На сайте с 26.09.2013
Offline
118
#4

Использовать для отправки писем https://github.com/PHPMailer/PHPMailer (самая популярная библа). + Что можно не крутить всякие iconv('utf-8', 'windows-1251',$msg);

★Сервис идентифицирует (https://socfishing.com/?utm_source=searchengines) посетителей вашего сайта и предоставляет их профили ВКонтакте, Телефон, Почта! Цены копеечные, работаем 8 лет.
NL
На сайте с 20.02.2016
Offline
31
n-l
#5
Samail:
$headers[] = 'Content-type: text/plain; charset=UTF-8';

поменяй на
$headers[] = 'Content-type: text/plain; charset=windows-1251';

Благодарю! Работает )))

Помог именно Ваш совет.

А я думал , что без перекодировки в UTF-8 тут никак... Но в моем случае все попытки привязать сюда UTF-8 ни к чему путному не привели.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий