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