发送到Outlook的PHP Mail()中断了代码

时间:2012-02-15 22:21:35

标签: php email outlook gmail

我在这里环顾四周,但找不到我所面临的问题的答案。

与我的问题最相似的是:emails sent with php mail don't show up correctly in outlook,但我检查了解决方案并不适用于我。

我基本上是在写一个发送电子邮件的PHP脚本,里面有一个表格。然而问题是,如果我在gmail中收到它,那么电子邮件显示正常,但它甚至根本没有通过Outlook。

检查进入Outlook的电子邮件的源代码,出于某种原因显示换行符(再次出现在gmail中)

例如:

<td>  xyz@aaa
tt.com </td>

什么时候显示为:

<td>  xyz@aaatt.com </td>

在我的PHP代码中,我甚至尝试删除行返回和空格(因为电子邮件中应该没有空格)

$rmv = array("\n");
$lead_email = str_replace($rmv, "", $lead_email);

$rmv = array("\r");
$lead_email = str_replace($rmv, "", $lead_email);

$rmv = array(" ");
$lead_email = str_replace($rmv, "", $lead_email);

作为参考,我的邮件标题如下:

$headers  = 'MIME-Version: 1.0' . "\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\n";
$headers .= 'From: helpdesk@viatechcrm.com' . "\n";

顺便说一句,我应该使用iso-8859-1还是utf-8?我偶尔会遇到欧洲字符的名字。

任何帮助非常感谢!

编辑:所以我正在检查源代码,并发现了一些有趣的东西。消息很长,但只显示3-4行。我发现它被切断了大约991个字符,因此电子邮件崩溃了..这是否与Mime-Version 1.0有关? 如何增加可以接收的字符数?我尝试在每个表格行之后添加'\ r \ n',但是4封电子邮件中的一封仍然没有显示出来

编辑2 :谢谢大家的帮助!我终于在2009年的一篇论坛帖子中找到了它。为了将来的参考,请参考上一篇文章:

http://forums.devarticles.com/php-development-48/formatting-a-newline-line-break-in-php-html-output-5274.html

2 个答案:

答案 0 :(得分:1)

如果您有非字母数字字符,则应使用UTF-8。你应该用“\ r \ n”结束每个标题行,而不只是简单的“\ n”。不确定这是否会解决您的问题,因为我无法测试,但这是您应该解决的问题。

答案 1 :(得分:0)

听起来您只在消息的HTML部分添加了“\ r \ n”。 所有标题行必须以“\ r \ n”结尾,而不仅仅是正文中的行。有些客户端和服务器只会处理“\ n”,但他们真的不需要(请参阅RFC 2822),因此Gmail和Outlook之间存在不一致。