PHP-почта с кодировкой utf-8 отображается неправильно в почтовых клиентах Microsoft

Я искал и искал решение для этого, но безрезультатно.

Я использую почтовую программу php для отправки смешанного текста / html-адреса электронной почты, закодированного в utf8. Вот соответствующий код:

$headers = "From: $fromPerson\r\n" . "Content-Transfer-Encoding: 8bit\r\n". "Reply-To: $fromPerson\r\n" . "Content-Type: multipart/alternative; boundary=". $mime_boundary_header. "\r\n" . "X-Mailer: PHP/" . phpversion(); $message = "$notice_text --$mime_boundary Content-Type: text/plain; charset='UTF-8' Content-Transfer-Encoding: 8bit $textEmail --$mime_boundary Content-Type: text/html; charset='UTF-8' Content-Transfer-Encoding: 8bit $htmlEmail --$mime_boundary--"; //mb_detect_encoding($message) returns UTF-8 $mail_sent = @mail( $to, $subject, $message, $headers); 

Сообщения содержат испанский язык вместе с этими хитрыми символами. Сообщения электронной почты отлично отображаются в gmail, hotmail (онлайн-перспективах), почте mac, телефонах и т. Д., Но не в прямой почтовой рассылке Windows или Microsoft Outlook.

Если я вручную установил шрифт по умолчанию в Windows Live Mail в utf8, сообщение отобразится правильно, но в противном случае это не так. Если я пересылаю электронное письмо от другого клиента в Outlook или Windows Live, он также отображает все.

Я мог бы найти работу вокруг, я уверен, но я что-то упускаю? Я не хочу полагаться на получателей, зная, как изменить кодировку сообщения, так что есть что-то, что мне нужно добавить в адрес электронной почты, чтобы побудить этих клиентов распознавать кодировку?

Я прошу прощения, если это было рассмотрено в другом месте, и я буду признателен за любые советы. Похоже, я должен просто пойти и использовать PHPMailer, чтобы понять, устраняет ли это проблему, но из личного любопытства было бы интересно узнать, почему это происходит …

Я не уверен, что ' обертывание кодировки необходимо или даже правильно. Попробуйте удалить их:

 Content-Type: text/plain; charset=UTF-8 
 $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=UTF-8\r\n"; $headers .= "From: example@example.com\r\n"; $headers .= "Reply-To: example@example.com\r\n"; 

Модификация ответа Рико дает немного более чистый код.

 $header_array = [ "MIME-Version: 1.0", "Content-type: text/html; charset=UTF-8", "From: example@example.com", "Reply-To: example@example.com" ]; $headers = implode("\r\n", $header_array);