электронная почта — PHP mail utf-8 проблемы

Я пытаюсь отправить электронное письмо в utf-8 кодирование с использованием PHP mail () func. И с этим есть некоторые проблемы. Такие как:

  1. Если в теле письма присутствуют символы юникода, тогда я получаю
    электронное письмо с заголовком «Content-Type: application / octet-stream».
    В противном случае, если бы не было символов Unicode, у меня есть Content-Type:
    text/plain; charset=us-ascii
    , Это поведение не зависит от
    отправка заголовка Content-Type: text/plain; charset=UTF-8
  2. Если предмет состоит из utf-8 символы, которые закодированы в соответствии с
    RFC2047 тогда я получаю двойной кодированный предмет, как это 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

0

Решение

Электронная почта — очень архаичная, устаревшая и сложная технология. Это особенно верно с кодировкой символов. Я бы предложил использовать библиотеку, такую ​​как PHPMailer. Если вы настаиваете на том, чтобы сделать это с нуля, истинный ответ выйдет за рамки вашего вопроса. Браузеры, клиенты и многое другое усложняют эту проблему. Я не могу сказать вам причину вашей проблемы, но решение — PHPMailer.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]