Нужна помощь: битая кодировка в письме

bbro

Новичок
Вот код скрипта для отправки емейла:

mb_internal_encoding ("utf-8");
$from = "Иван Иванов <[email protected]>";
$to = $name."<$email>";
$subject = "Подтверждение подписки";
$message = "текст письма здесь";
$headers = "From: ".$from."\nReply-To: ".$from."\nContent-Type: text/plain; charset=utf-8\nContent-Transfer-Encoding: 8bit";
mail ($to, $subject, $message, $headers);

И что характерно, само тело письма приходит в правильной кодировке. А вот поля отправителя, получателя и сабж письма - в краказябинах. Сами тексты этих полей 100% написаны в utf-8, код скрипта тоже в utf-8.
Вот что что я вижу в почте:

Subject: РРѕРґСРІРµСждение РїРѕРґРїРёСРєРё
From: Рван Рванов <[email protected]>
Reply-To: Рван Рванов <[email protected]>

Помогите плз!
 

флоппик

promotor fidei
Команда форума
Партнер клуба
К этим полям необходимо тоже клеить явно кодировку.
=?charset?encoding?encoded-text?=
PHP:
<?php
$subject = "=?uft-8?Q?Подтверждение подписки?=";
encoding это Q или B - B для base64
 

bbro

Новичок
Проблема решилась следующим образом:
$subject = "=?utf-8?B?" . base64_encode("Подтверждение подписки") . "?=";
И так для каждого поля.
 

AnrDaemon

Продвинутый новичок
Вообще-то есть специализированные функции для кодирования заголовков.
 

Lancerrr

Новичок
Добрый день!
У меня проблема похожая, помогите, пожалуйста.

Хотелось бы чтоб с любого почтового сервера или почтового агента письмо можно было бы прочесть...

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

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

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

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

WMix

герр M:)ller
Партнер клуба
весь русский текст воспроизводится в виде знаков вопроса.
тк в заголовке письма обещаешь текст в одной кодировке, а возвращаешь html в другой
$headers[] = 'Content-type: text/plain; charset=UTF-8';
<meta data-fr-http-equiv="Content-Type" content="text/html; charset=windows-1251">
предположительно, яндексу было пофиг на html заголовок, в отличии от google, а может и наоборот, в зависимости от того, что ты отправляешь на самом деле

Проблем с отображением кириллицы на сайте никогда не было.
без переделки всего сайта под кодировку utf-8
отправка письма никак не связана с кодировкой сайта

Возможно ли решить проблему
только если сам будешь понимать, что откуда в какой кодировке получаешь и отправляешь

как помощь
 
Последнее редактирование:
Сверху