Character encoding MIME头中的二进制字符合法吗?

Character encoding MIME头中的二进制字符合法吗?,character-encoding,mime,Character Encoding,Mime,我在一个处理电子邮件的服务器上工作,作为其中的一部分,我们做了一些MIME解析/编码。我最近遇到了一个问题,一条消息在其他情况下是有效的,但在MIME头中包含一个拉丁-1字符。有人向多个收件人输入了包含拉丁字母1的电子邮件地址,因此SMTP信封仅包含有效的收件人,但收件人行仍包含无效的地址和编码不正确的字符串 我的印象是这是非法的,MIME头必须是7位的。MIME头中的8位值必须按照以下格式进行编码 =?charset?encoding?encoded text?= 标题如下所示: To: &

我在一个处理电子邮件的服务器上工作,作为其中的一部分,我们做了一些MIME解析/编码。我最近遇到了一个问题,一条消息在其他情况下是有效的,但在MIME头中包含一个拉丁-1字符。有人向多个收件人输入了包含拉丁字母1的电子邮件地址,因此SMTP信封仅包含有效的收件人,但收件人行仍包含无效的地址和编码不正确的字符串

我的印象是这是非法的,MIME头必须是7位的。MIME头中的8位值必须按照以下格式进行编码

=?charset?encoding?encoded text?=
标题如下所示:

To: <changéd@someplace.com>, <secondaddress@someplace.com>
我的问题是:这是有效的哑剧吗?我只是不知道而已

明白了吗?您的选项是带引号的字符串-=?字符集?编码?编码文本?=

明白了吗?您的选项是引用字符串-=?字符集?编码?编码文本?=

来自Internet消息格式,第2.2节,标题字段:

标题字段是由字段名和冒号组成的行 :,后跟字段主体,并以CRLF结尾。田地 名称必须由可打印的US-ASCII字符组成,即:。, 值介于33和126之间(含33和126)的字符,但 冒号字段正文可以由任何US-ASCII字符组成, 除了CR和LF。但是,在以下情况下,字段体可能包含CRLF: 用于页眉折叠和展开,如第节所述 2.2.3. 所有字段正文必须符合中所述的语法 本标准第3节和第4节

因此,任何非ASCII字符都是非法的。

来自Internet消息格式,第2.2节,标题字段:

标题字段是由字段名和冒号组成的行 :,后跟字段主体,并以CRLF结尾。田地 名称必须由可打印的US-ASCII字符组成,即:。, 值介于33和126之间(含33和126)的字符,但 冒号字段正文可以由任何US-ASCII字符组成, 除了CR和LF。但是,在以下情况下,字段体可能包含CRLF: 用于页眉折叠和展开,如第节所述 2.2.3. 所有字段正文必须符合中所述的语法 本标准第3节和第4节

因此,任何非ASCII字符都是非法的。

电子邮件地址,如

changéd@someplace.com
如果字符以UTF-8编码,并且服务器支持SMTPUTF8(SMTP的扩展名),则完全合法。服务器通过使用SMTPUTF8关键字响应EHLO来宣传支持:

250-SMTPUTF8
客户端通过在MAIL命令上添加SMTPUTF8参数来利用扩展:

MAIL FROM:<changéd@someplace.com> SMTPUTF8
遗憾的是,目前很少有人支持这一扩展

有关更多信息,请参见RFC 6531:

changéd@someplace.com
如果字符以UTF-8编码,并且服务器支持SMTPUTF8(SMTP的扩展名),则完全合法。服务器通过使用SMTPUTF8关键字响应EHLO来宣传支持:

250-SMTPUTF8
客户端通过在MAIL命令上添加SMTPUTF8参数来利用扩展:

MAIL FROM:<changéd@someplace.com> SMTPUTF8
遗憾的是,目前很少有人支持这一扩展


请参阅RFC 6531以了解更多信息:

是的,我肯定知道地址无效,但我不会试图解析to:行本身以进行解释。我只是想知道在MIME头中使用非ASCII字符是否有效。是的,我肯定知道地址无效,但我并没有试图解析to:行本身进行解释。我只是想知道在MIME头中使用非ASCII字符是否有效。