PHP邮件和Postfix的换行问题

时间:2014-10-25 15:14:22

标签: php email postfix-mta line-endings email-headers

我们运行了一些PHP脚本,使用PHP的mail()函数发送邮件。

$message = "Some lengthy text";

$header = "MIME-Version: 1.0\r\n";
$header .= "Content-Type: text/plain; charset=iso-8859-1; format=flowed\r\n";
$header .= "From: Name <name@example.com>\r\n";
$header .= "Return-Path: <name@example.com>\r\n";

mail('me@example.com', 'Subject', wordwrap($message, 70), $header);

在PHP手册中提到一些UNIX-MTA不遵循RFC 2822并用LFCR替换LF。看起来这就是我们发生的事情,因为发送的邮件在其标题部分中有额外的换行符。这会搞砸邮件,因为标题被视为邮件正文。

MIME-Version: 1.0

From: Name <name@example.com>

Message-Id: <20141014171959.B161712E097@mail.mydomain.com>
Date: Tue, 14 Oct 2014 19:19:59 +0200 (CEST)

Some lengthy text

但是,仅在我们的某些脚本中出现此问题,其他脚本按预期工作。所以它看起来与我们的MTA无关。我们在Postfix系统上使用Debian。 PHP配置为使用/usr/sbin/sendmail -t -i发送邮件。这是Postfix到Sendmail的兼容性界面。 我还没有发现邮件正确发送的脚本和邮件头损坏的脚本有什么不同。将工作代码复制到同一目录中的新文件会导致发送的邮件损坏,所以我不认为PHP代码也是问题的根源。 工作脚本和损坏的脚本的文件编码和行结尾也是相同的。

关于还有什么可能导致这种行为的想法?

0 个答案:

没有答案