У меня есть несколько простых форм, которые отправляют только 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>
Есть идеи?
Вы пытались отправить многостраничную электронную почту, при этом у нас никогда не было проблем с 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, или вообще используют отдельные серверы.
В Outlook 2007 существует множество проблем с электронной почтой HTML.
http://www.molly.com/2007/01/18/what-happened-with-html-and-css-in-outlook-2007/
и так далее.