非常简单的HTML /纯文本电子邮件在microsoft live.com中根本没有显示

时间:2013-03-21 21:19:10

标签: php email live html-email

我一直在使用一个非常简单的PHP函数来构建HTML /纯文本电子邮件。它在gmail和我看到的许多其他客户端都运行良好。

事实证明,@ live.com帐户根本无法看到电子邮件内容。

以下是相关代码:

$random_hash = md5(date('r', time()));
//define the headers we want passed. Note that they are separated with \r\n
$headers = "From: server@example.com\r\nReply-To: server@example.com\r\n";
$headers .= "MIME-Version: 1.0\r\n";
//add boundary string and mime type specification
$headers .= "Content-Type: multipart/alternative; boundary=$random_hash\r\n";
$headers .= "Content-Transfer-Encoding: 7bit\r\n";
//define the body of the message.
$message = "This is a MIME encoded message.\r\n\r\n" .
    "--$random_hash\r\n" .
    "Content-Type: text/plain; charset=utf-8\r\n" .
    //"Content-Transfer-Encoding: 7bit\r\n" .
"\r\nthis is plain text.\r\n\r\n" .
"--$random_hash\r\n" .
"Content-Type: text/html; charset=utf-8\r\n" .
    //"Content-Transfer-Encoding: 7bit\r\n" .
    "\r\n<html><body>this is wonderful <b>HTML</b> text.</body></html>" .
    "\r\n\r\n--$random_hash--\r\n";
mail('someAddress@live.com', 'This is u umlaut: ü', $message, $headers);

如果我只发送HTML或纯文本,它将正确显示。

有什么想法吗?

我不想使用额外的库。基本上,我只需要HTML链接。 PHP Multi-Part Text/HTML showing blank上的答案对我没有帮助。

顺便说一句:你在live.com收件箱的电子邮件列表中错误地显示你的变音符号,但是当我在live.com中打开电子邮件时,它正确显示...

1 个答案:

答案 0 :(得分:0)

几个小时后得到它。

问题是CRLF

我用LF(\r\n)替换了所有CRLF(\n)并且它有效。

在途中,我也用8位替换了7位。

至于主题行,这对谷歌来说很简单,这就是utf-8的解决方案:

$subject = '=?utf-8?B?' . base64_encode($subject) . '?=';

谢谢你们!