电子邮件中的正确换行符是什么?LF还是CRLF?

Vil*_*lx- 8 email newline

最近有些客户抱怨他们收到了乱码.MIME标题显示,base64编码数据等.应该由他们的邮件客户端解码的东西.

在调查之后,我发现一些邮件客户端(gmx.de webmail命名为一个)在每隔一行之后插入一个空行,从而确实搞乱了一切.

在预感之后,我改变了我的邮件发送代码,用LF替换所有CRLF.而且看到了 - 邮件全部到来了.

现在,这很奇怪,因为RFC 5322明确指出了这一点

2.3.身体

消息正文只是US-ASCII字符的行.身体上唯一的两个限制如下:

o CR和LF必须一起作为CRLF出现; 它们不能独立出现在体内.

咦?糟糕的网络邮件?或者我在哪里出错了?其他网络邮件(如gmail)对此没有任何问题,事实上似乎大多数人没有问题(因为投诉很少).

请注意 - 我正在mail()Linux机器上通过PHP的功能发送电子邮件.底层邮件软件似乎是qmail,但我不确定.

似乎qmail在类似条件下不喜欢CRLF.这可能是问题吗?是不是已经修好了(该页面未在4年内更新)?

小智 5

http://www.php.net/manual/en/function.mail.php状态

笔记:

如果未收到消息,请尝试仅使用 LF (\n)。一些 Unix 邮件传输代理(最著名的是 qmail)自动用 CRLF 替换 LF(如果使用 CRLF,这会导致 CR 加倍)。这应该是最后的手段,因为它不符合 RFC 2822。