2011-07-17 30 views
1

我有一个PHP应用程序,发送电子邮件给用户。对于大多数用户来说,这很好。Lotus Notes是不处理我的电子邮件正确

但是,使用Lotus Notes作为其电子邮件客户端的用户正在收到一封电子邮件,该邮件似乎以我添加到邮件中的某些标头开头。

我试图改变线路的结局,都无济于事。

这里是发送电子邮件的代码。 (在循环中 - $行来自数据库)。

$to = $row['email']; 
    $subject = $language['summary']; 
    $headers = "From: $from\n". 
     "Reply-To: $from"."\n" ; 
    if (!mail($to, $subject, $body,$headers,"-f$from")) { 
     echo("<p>Message delivery failed to $to</p>"); 
    } 

Lotus Notes将X-Mailer:PHP/5.3.2-1ubuntu4.7作为内容的第一行!

有任何人任何想法,为什么,我怎么能更改电子邮件正常工作?

编辑 - 8月1日 - 试过\ r \ n和PHP_EOL作为行结尾。没有任何工作与笔记。 Everythgin工作与每个其他测试MTA。

+0

你有一个例子实际发送的原始邮件?检查X-Mailer标题之前是否没有额外的新行。 – Kerr

+0

尚未 - 但系统已经工作了一段时间,除了Notes用户之外没有任何投诉。如果没有详细检查,肯定会覆盖Thunderbird,MS的邮件客户端和谷歌,所以不会有太大的错误。我纠正了不一致的换行符,并没有解决问题。 – Ian

+0

如何找到实际发送的原始邮件?我已经复制自己,我收到的邮件在各方面都是100%正常。所有行以CRLF结束,并且没有任何意外的空白行。 – Ian

回答

0

您正在为标题使用不一致的换行符。使用\r\n两种:

$headers = "From: $from\n". 
    "Reply-To: $from"."\r\n" ; 

// Should be 
$headers = "From: $from\r\n". 
    "Reply-To: $from\r\n" ; 

根据MTA处理SMTP交易,没有它上面可以更好地为你行分解使用PHP_EOL常数:

$headers = "From: $from" . PHP_EOL . 
    "Reply-To: $from" . PHP_EOL ; 
+0

我知道行尾是不一致的。这是最新版本,并尝试了很多谷歌搜索。我安排了一个测试(可能需要一两天 - 我没有注释)。 – Ian

+0

让那一周 - 那个需要测试的人正在度假! – Ian

相关问题