【发布时间】:2011-10-10 15:55:09
【问题描述】:
最近一些客户抱怨他们收到了乱码电子邮件。显示了 MIME 标头,以及 base64 编码数据等。应该由他们的邮件客户端解码的东西。
经过调查,我发现一些邮件客户端(例如 gmx.de webmail)在每隔一行之后插入一个空白行,因此确实把所有事情都搞砸了。
根据预感,我更改了我的邮件发送代码,将所有 CRLF 替换为 LF。你瞧 - 邮件全部送达了。
现在,这很奇怪,因为RFC 5322 明确指出
2.3。身体
消息的正文只是几行 US-ASCII 字符。这 身体上只有两个限制如下:
o CR 和 LF 只能作为 CRLF 一起出现;他们不得出现 在体内独立。
嗯?网络邮箱不好?还是我哪里出错了?其他网络邮件(如 gmail)对此没有任何问题,而且实际上似乎大多数人都没有问题(因为投诉很少)。
请注意 - 我正在通过 Linux 机器上的 PHP 的 mail() 函数发送电子邮件。底层的邮件软件好像是qmail,但我不确定。
好像是qmail doesn't like CRLF under similar conditions。这可能是问题吗?不是已经修复了吗(那个页面4年没更新了)?
【问题讨论】:
-
@Vilx 你得到了明确的答案吗?我自己也在想这个。
-
@AdamD - 这是很久以前的事了,我已经不记得了。 :D 但我认为这是 qmail 或其他东西中的一个已知错误。不过不确定。