php 邮件头 \r\n 或 \n 中的哪个换行符?

2022-08-30 16:03:46

我看过很多使用php邮件功能的例子。其中一些使用 \r\n 作为标头的换行符,有些使用 \n。

$headers = "From: Just Me\n"; 
$headers .= "Reply-To:  Just me <$email>\n"; 

$headers = "From: Just Me\r\n";
$headers .= "Reply-To:  Just me <$email>\r\n";

哪一个是正确的?

有时我遇到过使用 \r\n 的情况,并且某些电子邮件客户端将部分标头解释为邮件文本(丢失这些标头信息) - 这是因为 \r\n 是错误的吗?


答案 1

CRLF,应该根据php文档使用。此外,为了符合RFC 2822规范行必须由回车符分隔,CR跟换行符LF。\r\n\r\n

由于 是 Windows 平台和 Unix 的本机,因此您可以在 Windows 上使用 PHP_EOLDocs 常量,这是当前运行脚本的平台的相应新行字符。\r\n\n


答案 2

以防万一搜索引擎拾取了这一点,并为其他人节省了我所经历的挫折:这是一个额外的好奇心。

在 Linux 上的 php 5.2x 上,我在 php mail() 的电子邮件头上有 \r\n,在升级到 php 5.3.3 后,格式化和发送神秘地失败了。删除 \r 修复了脚本(在检查了许多其他可能性之后)。


推荐