163和gmail对分段编码的邮件头处理不够好
本文按署名·非商业用途·保持一致授权作者:
,发表于2008年12月13日11时44分
标题似乎说得不太清楚,应该是编码后,分段,再组合。不管了,看下面。
Subject: =?UTF-8?B?W+mZiOazvXxTdXJmQ2hlbl0gQ29tbWVudDogIuWlvemHju+8jOWKn+Wkq+e9?==?UTF-8?B?keWPkeWogeS6hiI=?=
简单地说,这是把一段base64编码分成两段后作为一个头信息发送(两个“=?UTF-8?B?单段信息?=”)。现在很多邮件发送函数或者类,都对邮件信息进行了这样的分段。但是一些主流的web邮件客户端在这个的解码上做得并不是很好。我也不知道这应该怪客户端,还是怪发送程序。不过既然我无法改变那些客户端的行为,那就只好把发送程序里那些分段的地方都去掉了。另外,我对邮件方面的协议了解得不多,不知道分段的意义何在。
下面是三个我经常用的邮件系统对此类编码的处理。
yahoo的处理很完美:

163在主题列表出错,不过点进去之后的详细页是正确的(第一个我在两段编码之间加了空格:?= =?):

gmail无论是列表还是详细页里都是错误的:


2008-12-18 02:57:12
兄弟研究的很深入啊,不知道我客户端偶尔乱码是否是这个原因。