Постфиксная кодировка символов?

Постфиксная кодировка символов?

Я использую Postfix в качестве почтового сервера. У меня ОС Ubuntu.

Затем я использую PHP для отправки писем.

Проблема в том, что ни одно из моих писем не кодируется должным образом почтовой программой, которую использует мой провайдер VPS.

По их мнению, проблема во мне.

Только поле имени не закодировано должным образом. Например, "Björn" становится "Björn" в моих письмах.

Однако, когда я вывожу echo $name, выводится "Бьёрн" что правильно.

Кроме того, gmail и hotmail отображают его правильно.

Самое странное, что «текст» (само сообщение) закодирован правильно.

Для отправки почты я использую следующее:

$headers="MIME-Version: 1.0"."\n";
$headers.="Content-type: text/plain; charset=UTF-8"."\n";
$headers.="From: $name <$email>"."\n";

$name=  iconv(mb_detect_encoding($name), "UTF-8//IGNORE//TRANSLIT", $name);
//// I HAVE TRIED WITH AND WITHOUT THE LINE ABOVE, NO DIFFERENCE            

mail($to, '=?UTF-8?B?'.base64_encode($subject).'?=', $text, $headers, '[email protected]'); 

Я пробовал и с линией iconv, и без нее, но безуспешно.

Последнее, о чем я могу думать, этоПОСТФИКС, может там есть настройка кодировки символов? Кто-нибудь знает?

решение1

Текст сообщения может содержать любой определенный вами набор символов (поскольку вы определяете набор символов для письма в заголовке письма (content-type = utf8), но заголовки (тема, отправитель - имя, адрес электронной почты) определяются в клиенте, который читает письмо, поэтому вы не можете на это повлиять. Gmail использует utf8 по умолчанию, в то время как другие клиенты, просматривающие письма, могут использовать любой понравившийся им набор символов, и в основном везде полностью поддерживаются только символы ASCII.

Редактировать: В заголовке сообщения могут быть символы за пределами US-ASCII, если они закодированы MIME ("=?charset?encoding?encoded text?=")

решение2

Я вижу одну проблему: вы перешли $nameна UTF-8.послевстраивая его в $headers. Так что то, что отправляется в postfix, это то, что было там раньше. Вы должны iconv()это и добавить кодировку MIME к немудодобавив его в $headers.

Связанный контент