拿地址
foo:bar <[email protected]>
据我了解,显示名称中的冒号
foo:bar
是一个特殊字符,应该是带引号的字符串的一部分,例如"foo:bar" <[email protected]>
在下一个示例中,显示名称
foo:bar
位于(RFC2047?)编码单词中,但在编码之前未用引号引起来。这是合法地址吗?我遇到了一个不接受它的工具,但我不确定这是一个错误还是严格正确的行为。
=?UTF-8?B?Zm9vOmJhcg==?= <[email protected]>
我想提出问题的另一种方式是,RFC5322 验证应该在 RFC2047 标头解码之前还是之后进行?
注意:编码字的解码和显示发生在结构化字段主体被解析为标记之后。因此,可以隐藏编码字中的“特殊”字符,这些字符在显示时将与周围文本中的“特殊”字符无法区分。由于这个原因和其他原因,通常不可能将包含“编码字”的消息头转换为可由 RFC 822 邮件阅读器解析的未编码形式。
display-name
是一个令牌,所以我对规范的解读是你的最后一个例子是一个有效的地址 - 验证应该对编码值进行,然后解码以供稍后显示。
第 5 节还说允许使用“编码字”来表示纯 ASCII 字符的字符串,但不鼓励使用。因此,在这个示例中,我们鼓励您使用引用形式
"foo:bar" <[email protected]>
,而不是使用不必要的编码单词。