最近有些客户抱怨说他们收到了乱码。 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年内没有更新)?
答案 0 :(得分:2)
http://www.php.net/manual/en/function.mail.php州
注意:
如果未收到消息,请尝试仅使用LF(\ n)。一些Unix邮件传输代理 (最值得注意的是qmail)自动将CRLF替换为LF(这会导致CR加倍 使用CRLF)。这应该是最后的手段,因为它不符合RFC 2822。