Intereting Posts
Что такое демон? Их практическое использование? Использование php? Структура CSS-кода с циклами PHP Round 2 Как передать параметры POST в URL? Обнаружение, если пользователю нравится приложение facebook PHP: как получить $ для печати с использованием эха Извлечение SimpleXMLElement PHP Является ли использование PHP для сопоставления нескольких файлов JavaScript, которые будут быстрее, чем включение их отдельно? Тема WordPress Child включает в себя файлы Запись файла .htaccess с php для обновления AJAX с помощью URL-адресов Удалить элемент из многомерного массива на основе значения Использование mcrypt для передачи данных через веб-службу не выполняется Joomla 1.6 Внешняя проблема взаимодействия с PHP Outlook API OAuth2 автономный доступ / постоянный доступ с использованием php php: установка часового пояса по смещению UTC Что происходит быстрее: MySQL / PHP или прямо из статических файлов?

Microsoft Exchange не обрабатывает электронную почту, сгенерированную PHPmailer, как HTML

Эта проблема раздражала меня в течение нескольких недель. У меня есть скрипт, который отправляет html-письмо с xls attachmentm нескольким получателям с помощью PHPmailer. Он работает отлично уже более одного года. Недавно два получателя из той же компании, которые используют Microsoft Exchange в качестве почтового клиента, получают это электронное письмо как текст. Ниже приводится пример электронной почты, которую они получают:

--b1_dbc2cccc876da210fd56ae7a2601e692 Content-Type: multipart/alternative; boundary="b2_dbc2cccc876da210fd56ae7a2601e692" --b2_dbc2cccc876da210fd56ae7a2601e692 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To view the message, please use an HTML compatible email viewer! --b2_dbc2cccc876da210fd56ae7a2601e692 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit .................................... the email body html code in this block .................................... --b2_dbc2cccc876da210fd56ae7a2601e692-- --b1_dbc2cccc876da210fd56ae7a2601e692 Content-Type: application/octet-stream; name="3MShop-NewOrders_07-30AM-05052014.xls" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="3MShop-NewOrders_07-30AM-05052014.xls" PGgyPjNNU2hvcC1OZXdPcmRlcnMgMDUtMDUtMjAxNCAwNzozMDoxMCBBTSA8L2gyPjxociAvPjx0 YWJsZSBib3JkZXI9MSBjZWxscGFkZGluZz01IGNlbGxzcGFjaW5nPTI+PHRyPjx0ZCBhbGln MDUgLSBOYXZ5IEJsdWU8L3RkPjx0ZCBhbGlnbj1sZWZ0PjE8L3RkPjwvdHI+PC90YWJsZT4= .................................... the rest codes of this attachment .................................... --b1_dbc2cccc876da210fd56ae7a2601e692-- 

Ниже приведен пример заголовка электронной почты, из которого получаются другие получатели

 Content-Type: multipart/mixed; boundary="b1_dbc2cccc876da210fd56ae7a2601e692" Sender: <emocean@cp60.ezyreg.com> X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - cp60.ezyreg.com X-AntiAbuse: Original Domain - emoceanstudios.com.au X-AntiAbuse: Originator/Caller UID/GID - [616 500] / [47 12] X-AntiAbuse: Sender Address Domain - emoceanstudios.com.au X-Get-Message-Sender-Via: cp60.ezyreg.com: authenticated_id: emocean/from_h X-Source: X-Source-Args: /usr/sbin/proxyexec -q -d -s /var/run/proxyexec/cagefs.sock/socket /bin/cagefs.server X-Source-Dir: emoceanstudios.com.au:/public_html/3M-Shop-Scripts --b1_dbc2cccc876da210fd56ae7a2601e692 Content-Type: multipart/alternative; boundary="b2_dbc2cccc876da210fd56ae7a2601e692" --b2_dbc2cccc876da210fd56ae7a2601e692 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To view the message, please use an HTML compatible email viewer! --b2_dbc2cccc876da210fd56ae7a2601e692 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit 

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

 Content-Type: multipart/mixed; 

Что более странно, в то время как их Microsoft Exchange не может отобразить это электронное письмо, отправленное из PHPmailer как HTML, если я пересылаю то же письмо с моего gmail на свой Exchange, они теперь могут корректно отображать его. Это заставляет меня думать, что это может быть проблема с PHP-скриптом. Сценарий здесь:

 $mail = new PHPMailer(true); $mail->CharSet = 'UTF-8'; $mail->AddAddress('example@example.com.au', 'example name'); $mail->SetFrom('example@example.com.au', 'example name'); $mail->ContentType = 'text/html'; $mail->IsHTML(true); $mail->Subject = 'example subject'; $mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; $mail->MsgHTML(file_get_contents('contents.html')); $mail->AddAttachment($newOrdersReport); // attachment $mail->Send(); 

Я не эксперт по электронной почте, но это выглядит неправильно:

 --b1_dbc2cccc876da210fd56ae7a2601e692 Content-Type: multipart/alternative; boundary="b2_dbc2cccc876da210fd56ae7a2601e692" 

Вы уже объявили Content-Type как multipart и определили границу, почему он повторяется?

Прикрепите исходный код электронной почты, как это было получено, пожалуйста. Я знаю, что некоторые старые версии Exchange, а именно 2007 без SP1, как сообщается, отображают электронные письма HTML в виде простого текста по всем направлениям. И я знаю, что OWA очень плохо поддерживает HTML-письмо. OWA – это единственный и единственный клиент, с которым я никогда не получал, чтобы мои письма хорошо смотрелись. Вдали от ответа на ваш вопрос, но, возможно, некоторые вещи, чтобы исправить исследования.

Другая мысль. Вы должны изучить и сравнить безопасность, прилагаемую к электронной почте при отправке через PHPmailer vs Gmail. Идентификация SPK и DKIM, а также оценка SpamAssassin могут сильно повлиять на то, как клиент отображает электронную почту. Если вы не аутентифицируете сообщение через PHPmailer, весьма вероятно, что запуская Exchange ограничивает способ его отображения.