Outlook 2007 получает html-почту как источник с заголовками, другие MUA работают нормально. Зачем?

У меня есть несколько простых форм, которые отправляют только html-письмо. Большинство клиентов (Gmail, Lotus Notes 8, hotmail / live, прямая трансляция Windows, Outlook Express) получают письма просто отлично, но Outlook 2007 этого не делает.

Код выглядит так:

$data=" <html> <body> <strong><u>$sub</u></strong><br><br> <strong>Name:</strong> {$_POST["nombre"]}<br><br> <strong>Phone:</strong>{$_POST["telefono"]}<br><br> <strong>Email:</strong> {$_POST["email"]}<br><br> <strong>Subject:</strong> {$_POST["asunto"]}<br><br> <strong>Question:</strong> {$_POST["consulta"]}</strong> </body> </html>"; $header = "Reply-To: $from\r\n"; $header .= "From: \"".$_POST["nombre"]."\" <$from>\r\n"; $header .= "MIME-Version: 1.0\r\n"; $header .= "Content-Type: text/html; charset=iso-8859-1\r\n"; $enviado = mail($destino,$sub,$data,$header); 

( $from является единственной частью подтвержденного сообщения)

Сообщение, полученное клиентом, выглядит следующим образом:

 Content-Type: text/html; charset=iso-8859-1 From: Consulta de "Boss" <boss@myfirm.com> Reply-To: boss@myfirm.com X-Mailer: PHP/ <strong><u>Solicitud de envío de recetas - CLIENT</u></strong><br><br><strong>Nombre y Apellido:</strong> Boss<br><br><strong>Email:</strong> boss@myfirm.com<br><br><br> 

Есть идеи?

Solutions Collecting From Web of "Outlook 2007 получает html-почту как источник с заголовками, другие MUA работают нормально. Зачем?"

Вы пытались отправить многостраничную электронную почту, при этом у нас никогда не было проблем с Outlook 2k3 и 2k7 (кроме плохой рендеринга HTML)

 <?php $header = "From: Sender <sen...@domain.org>\r\n"; $header .= "Reply-to: Sender <blabla...@domain.net>\r\n"; $header .= "X-Mailer: Our Php\r\n"; $boundary = "==String_Boundary_x" .md5(time()). "x\r\n"; $boundary2 = "==String_Boundary2_y" .md5(time()). "y\r\n"; $header .= "MIME-Version: 1.0\r\n"; $header .= "Content-Type: multipart/related;\r\n"; $header .= " type="multipart/alternative";\r\n"; $header .= " boundary="$boundary";\r\n"; $message = "If you read this, your email client doesn't support MIME\r\n"; $message .= "--$boundary\r\n"; $message .= "Content-Type: multipart/alternative;\r\n"; $message .= " boundary="$boundary2";\r\n"; $message .= "--$boundary2\r\n"; $message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n"; $message .= "Content-Transfer-Encoding: 7bit\r\n"; $message .= "Alternative message in plain text format.\r\n"; $message .= "--$boundary2\r\n"; $message .= "Content-Type: text/html; charset=\"iso-8859-1\"\r\n"; $message .= "Content-Transfer-Encoding: 7bit\r\n"; $message .= "<html><body><p>HTML formatted message</p></body></html>"; 

Вы можете заменить границы тем, что хотите, но они должны быть уникальными.

Для более мощной и гибкой отправки электронной почты в php я предлагаю использовать SwiftMailer

EDIT: поскольку Outlook 2007 имеет действительно тупой визуализатор HTML, вы также можете попробовать исправить свою разметку, в вашем примере никогда не открывался </font> , если нет реальной почты или опечатки.

У меня была очень похожая проблема, попробуйте удалить / r из ваших возвратов и использовать только / n. Outlook и hotmail имеют проблемы с / r / n.

Я подтверждаю опыт обмена Exchange janmoesen . Если бы изменить CRLF в заголовках только на LF, тогда он начал работать.

(Еще раз спасибо Microsoft, за то, что я заработал 40% дополнительного времени.

Также я благодарю janmoesen за указание на это! Этот поиск завершен.)

Я столкнулся с той же проблемой с Outlook 2007.

Ответ прост: заменим \ r \ n на \ n

Если сообщение находится в HTML, вам необходимо идентифицировать его как таковое:

 $header .= "Content-Type: text/html; charset=iso-8859-1\r\n"; 

Мне всегда повезло с MIME-кодированными HTML-сообщениями. Даже если есть только одна часть, я обычно использую multipart / mixed и явно задаю тип контента (text / html). Я не очень хорошо знаком с PHP, но пакет PEAR::Mail_Mime выглядит как кандидат.

У Outlook не должно быть проблем с его обработкой. (эмпиризм не должен ).

У меня были проблемы с Exchange (а не только с Outlook) и CRLF в заголовках с аналогичными результатами. В основном, мы отправляли письма (используя PHP на Debian с Postfix) с заголовками, разделенными CRLF, которые по прибытии будут повреждены в Exchange. Когда я изменил эти \r\n на просто \n , проблема исчезла. («RFCs прокляты!», А?)

YMMV, очевидно, поскольку неясно, подключаются ли ваши другие почтовые клиенты к тому же серверу, что и Outlook, или вообще используют отдельные серверы.