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

时间:2011-07-21 23:01:59

标签: email newline

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

经过调查,我发现有些邮件客户端(gmx.de webmail为其名称)在每隔一行之后插入一个空白行,因此确实搞乱了所有内容。

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

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

  

2.3。体

     

消息正文只是US-ASCII字符的行。该     身体上只有两个限制如下:

     

o CR和LF必须一起作为CRLF出现;它们不得出现        独立于体内。

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

请注意 - 我正在Linux的盒子上通过PHP的mail()函数发送电子邮件。底层邮件软件似乎是qmail,但我不确定。

似乎是qmail doesn't like CRLF under similar conditions。这可能是问题吗?是不是已经修好了(该页面在4年内没有更新)?

1 个答案:

答案 0 :(得分:2)

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

  

注意:

     

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