我在一个处理电子邮件的服务器上工作,作为其中的一部分,我们做一些MIME解析/编码。我最近遇到了一个问题,一个消息是有效的,否则,但包含一个拉丁语-1字符中的MIME头。有人向多个收件人输入了电子邮件地址,其中包含拉丁文-1字符,因此SMTP信封仅包含有效收件人,但收件人行仍然包含无效地址和不正确编码的字符串。
我的印象是,这是非法的,MIME头必须是7位。MIME头中的8位值必须在表单中编码。
=?charset?encoding?encoded text?=
所讨论的标题如下:
To: <changéd@someplace.com>, <secondaddress@someplace.com>
,我的问题是:这是一个有效的哑剧,我只是不知道?
发布于 2010-10-14 05:37:22
来自RFC2822,因特网消息格式,第2.2节,报头字段
标题字段是由字段名组成的行,后面是冒号(":"),后面是字段体,最后是CRLF。字段名必须由可打印的US字符(即值在33到126之间的字符,包括在内)组成,冒号除外。字段体可以由任何US字符组成,但CR和LF除外.然而,如2.2.3节所述,场体在标题“折叠”和“展开”中使用时可能包含CRLF。所有字段体都必须符合本标准第3节和第4节中描述的语法。
因此,任何非ASCII字符都是非法的。
发布于 2010-10-14 05:36:37
address = mailbox ; one addressee
mailbox = addr-spec ; simple address
addr-spec = local-part "@" domain ; global address
local-part = word *("." word) ; uninterpreted
word = atom / quoted-string
atom = 1*<any CHAR except specials, SPACE and CTLs>
CHAR = <any ASCII character> ; ( 0-177, 0.-127.)
明白了?你的选项是“-string”- =?charset?encoding?encoded text?=
发布于 2013-03-29 09:24:54
电子邮件地址
changéd@someplace.com
如果字符是用UTF-8编码的,如果服务器支持SMTPUTF8,则是完全合法的,这是SMTP的扩展。服务器通过使用SMTPUTF8关键字响应EHLO来宣传支持:
250-SMTPUTF8
客户端通过在邮件命令中添加SMTPUTF8参数来利用扩展:
MAIL FROM:<changéd@someplace.com> SMTPUTF8
遗憾的是,目前很少有人支持这一扩展。
有关更多信息,请参见RFC 6531:https://www.rfc-editor.org/rfc/rfc6531
https://stackoverflow.com/questions/3933633
复制相似问题