Я пытаюсь отправить электронное письмо в utf-8
кодирование с использованием PHP mail () func. И с этим есть некоторые проблемы. Такие как:
Content-Type:
text/plain; charset=us-ascii
, Это поведение не зависит отContent-Type: text/plain; charset=UTF-8
utf-8
символы, которые закодированы в соответствии сSubject:
=?us-ascii?Q?=3D=3FUTF-8=3FB=3Fw5HClsORwpfDkcKU=3F=3D?=
,Subject: =?UTF-8?B?w5HClsORwpfDkcKU?=
Пример:
$subject = 'іїє';
$body = 'іїє';
$headers = "Content-Type: text/plain; charset=UTF-8\r\n". "MIME-Version: 1.0\r\n";
mail('[email protected]', mb_encode_mimeheader($subject, 'UTF-8', 'B'), $body, $headers);
Вот часть полученных заголовков:
Subject: =?us-ascii?Q?=3D=3FUTF-8=3FB=3Fw5HClsORwpfDkcKU=3F=3D?=
User-Agent: Heirloom mailx 12.5 6/20/10
MIME-Version: 1.0
Content-Type: application/octet-stream
Content-Transfer-Encoding: 8bit
С–С—С”
В качестве MTA на сервере установлен postfix.
Как клиент, использующий Gmail
Электронная почта — очень архаичная, устаревшая и сложная технология. Это особенно верно с кодировкой символов. Я бы предложил использовать библиотеку, такую как PHPMailer. Если вы настаиваете на том, чтобы сделать это с нуля, истинный ответ выйдет за рамки вашего вопроса. Браузеры, клиенты и многое другое усложняют эту проблему. Я не могу сказать вам причину вашей проблемы, но решение — PHPMailer.
Других решений пока нет …