当没有其他标题存在时,PHP邮件会添加前导换行符

时间:2013-12-30 02:02:45

标签: newline php

我在Mac OS X Mavericks上使用PHP 5.4.17上的mail遇到了一些奇怪的行为。当我发送这样一封简单的电子邮件时:

mail("me@example.com", "Test", "A line of text.");

生成的电子邮件包含一个主要换行符。即来源看起来像这样:

(Other headers)
To: me@example.com
Subject: Test
X-PHP-Originating-Script: 501:-
Message-Id: ...
Date: Mon, 30 Dec 2013 14:52:49 +1300 (NZDT)
From: me@mymachine.local (Me)


A line of text.

但是,当我向命令添加一个额外的标题(例如CC)时,前导换行消失:

mail("me@example.com", "Test", "A line of text.", "Cc: me@example.com\r\n");

结果:

(Other headers)
To: me@example.com
Subject: Test
X-PHP-Originating-Script: 501:-
Cc: me@example.com
Message-Id: ...
Date: Mon, 30 Dec 2013 14:53:33 +1300 (NZDT)
From: me@mymachine.local (Me)

A line of text.

如何才能让第一行不添加此主流换行符?我已尝试将NULL""作为$headers参数传递给mail,但这没有效果。

1 个答案:

答案 0 :(得分:5)

这个“错误”是由于PHP处理X-PHP-Originating-Script标头的方式,该标头是在使用mail.add_x_header时注入的;如果未指定自定义标头,则会附加一个额外的换行符,如the source中所示。

您可以通过禁用标题来阻止此问题:

ini_set('mail.add_x_header', 0);

或者更改相应的php.ini设置以使更改全局生效。

<强>更新

已修复5.45.55.6

相关问题