O Outlook 2007 recebe emails em HTML como fonte com cabeçalhos, outros MUAs funcionam bem.Por que?
-
23-09-2019 - |
Pergunta
Tenho alguns formulários simples que enviam um e-mail somente em HTML.A maioria dos clientes (Gmail, Lotus Notes 8, hotmail/live, windows live mail, Outlook Express) recebe os e-mails perfeitamente, mas o Outlook 2007 não.
O código fica assim:
$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
é a única parte da mensagem validada)
A mensagem recebida pelo cliente é assim:
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>
Alguma ideia?
Solução
Você já tentou enviar e -mails multipart, ao fazer isso, nunca tivemos problemas com o Outlook 2K3 e 2K7 (exceto que a renderização html ruim)
<?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>";
Você pode substituir os limites pelo que quiser, mas eles devem ser únicos.
Para um e -mail mais poderoso e flexível, enviando no PHP, sugiro usar Swiftmailer
EDIT: Como o Outlook 2007 tem um renderizador HTML realmente idiota, você também pode tentar consertar sua marcação, há um </font>
Nunca abriu em seu exemplo, não é o correio real ou um erro de digitação em questão.
Outras dicas
Eu tive um problema muito semelhante, tente remover o /r de suas devoluções e usar apenas /n. Outlook e Hotmail têm problemas com /r /n.
Certifique-se de ter compilado definido nas propriedades do arquivo.
e.g.
clique individual "recurso1.eventreciver.cs" dentro do Solution Explorer.Agora olhe para a guia Propriedades e você deve ver a Ação de Construção .... Certifique-se de definir para compilar.
O mesmo vale para qualquer outra coisa dentro do projeto
Encontrei o mesmo problema com o Outlook 2007.
A resposta é simples: substitua r n por n
Se a mensagem estiver em HTML você precisa identificá-la como tal:
$header .= "Content-Type: text/html; charset=iso-8859-1\r\n";
Eu sempre tive mais sorte com o MIME codificado HTML e -mails. Mesmo se houver apenas uma parte, normalmente uso multipart/misto e defino explicitamente o tipo de conteúdo (texto/html). Não estou muito familiarizado com o PHP, mas o PEAR::Mail_Mime
O pacote parece um candidato.
O Outlook não deve ter problemas para lidar com isso. (ênfise em não deveria).
Tive problemas com o Exchange (não apenas o Outlook) e o CRLF em cabeçalhos com resultados semelhantes. Basicamente, estávamos enviando e-mails (usando o PHP no Debian com o Postfix) com cabeçalhos separados pela CRLF, que seriam mutilados em troca na chegada. Quando eu mudei esses \r\n
para simplesmente \n
, o problema se foi. ("RFCs são condenados!", Eh?)
YMMV, obviamente, como não está claro se seus outros clientes de email se conectam ao mesmo servidor que o Outlook ou usam servidores separados.
Existem muitos problemas com o email HTML no Outlook 2007.
http://www.molly.com/2007/01/18/what-happened-with-html-and-css-in-ultlook-2007/
e assim por diante.