2011-07-21 128 views
5

最近有些客户抱怨说他们收到了乱码邮件。显示的是MIME头文件,以及base64编码的数据等。应该由其邮件客户端解码的东西。电子邮件的正确换行是什么? LF还是CRLF?

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

在预感之后,我改变了我的邮件发送代码,用LF替换了所有的CRLF。你瞧,邮件到达了。现在

,这是奇怪的,因为RFC 5322明确指出

2.3。 Body

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

o CR和LF必须只发生在一起作为CRLF;他们绝不能在体内独立出现 。

咦?坏webmail?或者我在某个地方出了问题?其他网络邮件(如Gmail)对此没有任何问题,实际上似乎大多数人没有问题(因为投诉很少)。

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

看来是qmail doesn't like CRLF under similar conditions。这可能是问题吗?它是否已经被修复(该页面在4年内没有更新)?

+0

很确定它是CRLF。 – BoltClock

+0

所以你downvoted? O_o –

+0

我没有。事实上,我刚刚投票。 – BoltClock

回答

2

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

注:

如果没有收到邮件,请尝试使用LF(\ n)的唯一。某些Unix邮件传输代理 (最着名的是qmail)会自动用CRLF替换LF(如果使用 ,则会导致CR翻倍)。这应该是最后的手段,因为它不符合RFC 2822.

相关问题