这些电子邮件标头符合RFC-2047吗?

时间:2017-05-24 09:34:29

标签: mime quoted-printable

我有几个客户使用我自己编写的邮件客户端。他们最近偶然发现附件档案名称到达的电子邮件是乱七八糟的。

当我查看这些电子邮件时,我发现显然有一个本地网络邮件服务发送附件名称如下:

listp

根据RFC 2047,这是一个完全无效的mime标头。它没有带引号的可打印标识符(?Q?),不同的字节用%而不是=编码,整个编码字应以=?开头。并以?=结束,但不是。

当我将其修改为正确的格式时:

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

然后标题被正确解码。

有人能告诉我,我在这里遗失了什么吗?是否存在允许这些标头的RFC2047的新扩展,或者它们是完全错误的?

1 个答案:

答案 0 :(得分:0)

如@ alex-k所述,name*=语法在RFC2231中定义,该语法是在RFC2047之后编写的。

但是要回答所要求的问题,不。这两个标头都不符合RFC2047。

在编写RFC2047时,*=语法不存在,因此原始语法不符合要求。

第二组包含MIME编码的单词,是无效的,因为它们违反了RFC2047第5节中关于允许使用MIME编码的单词的规则,特别是以下两个规则:

   + An 'encoded-word' MUST NOT appear within a 'quoted-string'.

   + An 'encoded-word' MUST NOT be used in parameter of a MIME
     Content-Type or Content-Disposition field, or in any structured
     field body except within a 'comment' or 'phrase'.

(这些规则在RFC中不是连续的。)