我在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
,但这没有效果。
答案 0 :(得分:5)
这个“错误”是由于PHP处理X-PHP-Originating-Script
标头的方式,该标头是在使用mail.add_x_header
时注入的;如果未指定自定义标头,则会附加一个额外的换行符,如the source中所示。
您可以通过禁用标题来阻止此问题:
ini_set('mail.add_x_header', 0);
或者更改相应的php.ini
设置以使更改全局生效。
<强>更新强>