我有几个客户使用我自己编写的邮件客户端。他们最近偶然发现附件文件名到达的电子邮件是乱码。
当我检查这些电子邮件时,我发现显然有一个本地网络邮件服务发送附件名称如下:
Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document;
name*="UTF-8''%D7%A2%D7%A8%D7%9B%D7%AA%20%D7%94%D7%A8%D7%A9%D7%9E%D7%94%20TCMP.docx"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename*=UTF-8''%D7%A2%D7%A8%D7%9B%D7%AA%20%D7%94%D7%A8%D7%A9%D7%9E%D7%94%20TCMP.docx
根据 RFC 2047,这是一个完全无效的 mime 标头。它没有带引号的可打印标识符 (?Q?),不同的字节用 % 而不是 = 编码,整个编码字应该以 =? 并以 ?= 结尾,但事实并非如此。
当我将其修复为正确的格式时,如下所示:
Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document;
name="=?UTF-8?Q?=D7=A2=D7=A8=D7=9B=D7=AA=20=D7=94=D7=A8=D7=A9=D7=9E=D7=94=20TCMP.docx?="
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename=?UTF-8?Q?=D7=A2=D7=A8=D7=9B=D7=AA=20=D7=94=D7=A8=D7=A9=D7=9E=D7=94=20TCMP.docx?=
然后标题被正确解码。
谁能告诉我我是否在这里遗漏了什么?RFC2047 是否有允许这些标头的新扩展,或者它们完全错误?