Php Outlook 2007将html邮件作为带有标题的源邮件接收,其他邮件则可以正常工作。为什么?

Php Outlook 2007将html邮件作为带有标题的源邮件接收,其他邮件则可以正常工作。为什么?,php,outlook,html-email,Php,Outlook,Html Email,我有几个简单的表单,只发送html电子邮件。大多数客户端(Gmail、Lotus Notes 8、hotmail/live、windows live mail、outlook express)都能很好地接收电子邮件,但outlook 2007却不能 代码如下所示: $data=" <html> <body> <strong><u>$sub</u&g

我有几个简单的表单,只发送html电子邮件。大多数客户端(Gmail、Lotus Notes 8、hotmail/live、windows live mail、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);
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>

有什么想法吗?

如果邮件是HTML格式的,您需要将其标识为:

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

Outlook 2007中的HTML电子邮件存在许多问题。


等等。

我在处理MIME编码的HTML邮件时总是运气更好。即使只有一个部分,我通常使用multipart/mixed并显式设置内容类型(text/html)。我对PHP不是很熟悉,但是
PEAR::Mail\u Mime
包看起来很适合


Outlook在处理它时应该没有问题。(在上的emphisis不应该)。

我在类似结果的标题中遇到了Exchange(不仅仅是Outlook)和CRLF的问题。基本上,我们发送带有CRLF分隔头的邮件(在Debian上使用带有后缀的PHP),邮件到达后会在Exchange中损坏。当我将那些
\r\n
更改为简单的
\n
时,问题就消失了。(“该死的RFC!”,嗯?)


YMMV,很明显,因为不清楚您的其他邮件客户端是连接到与Outlook相同的服务器,还是使用单独的服务器。

您是否尝试发送多部分电子邮件,在这样做时,Outlook 2k3和2k7从未出现过问题(HTML呈现不佳除外)


我确认janmoesen与Exchange分享的经验。
必须将标题中的CRLF更改为LF,然后它开始工作

(再次感谢微软让我额外工作40%的时间


也非常感谢janmoesen指出这一点!搜索结束。)

我遇到了一个非常类似的问题,请尝试从您的报税表中删除/r,并仅使用/n。Outlook和D hotmail在/r/n上有问题。

我在Outlook 2007上遇到了同样的问题


答案很简单:将\r\n替换为\n

Argh!从错误的版本复制和粘贴(我将代码编辑为纯文本以获得通过)。它在真正的代码中确实说了“text/html”。我纠正了这个问题,谢谢。好吧,但这些问题是(据我所知)那种“我的布局显示不正确”的问题,不是那种“垃圾,邮件的标题显示了,我得到了原始html”的问题。还是我错了?有关消息的布局并不复杂。我想这是相关的。几年前,我曾为此奋斗,后来放弃了。HTML电子邮件无论如何都是邪恶的,outlook正试图通过篡改你的内容来处理HTML电子邮件的邪恶。哦,当然。我现在给客户打电话,告诉她‘你知道吗?HTML电子邮件是邪恶的。贾斯汀是这么说的。我并不沮丧。我很好奇。我想知道为什么。你就是那个说“几年前我放弃了”的人。你的“html电子邮件是邪恶的”观点是荒谬的。把这个词留给真正值得用的词。就像Cobol,听着,我不想在这里争论,我只是陈述我相信是真的。我不是那个认为HTML电子邮件是个坏主意的人。如果你想在谷歌上搜索一下的话,网络上到处都有这样的信息。这是那些用户友好的“功能”之一,后来变成了一场巨大的安全噩梦,微软Outlook不只是按原样显示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>";