未加引号的特殊字符在 RFC 5322 电子邮件显示名称中是否合法(如果它们位于编码单词中)?

问题描述 投票:0回答:1

拿地址

foo:bar <[email protected]>

据我了解,显示名称中的冒号

foo:bar
是一个特殊字符,应该是带引号的字符串的一部分,例如
"foo:bar" <[email protected]>

在下一个示例中,显示名称

foo:bar
位于(RFC2047?)编码单词中,但在编码之前未用引号引起来。这是合法地址吗?我遇到了一个不接受它的工具,但我不确定这是一个错误还是严格正确的行为。

=?UTF-8?B?Zm9vOmJhcg==?= <[email protected]>

我想提出问题的另一种方式是,RFC5322 验证应该在 RFC2047 标头解码之前还是之后进行?

email smtp rfc5322
1个回答
1
投票

RFC 2047 6.2 说

注意:编码字的解码和显示发生在结构化字段主体被解析为标记之后。因此,可以隐藏编码字中的“特殊”字符,这些字符在显示时将与周围文本中的“特殊”字符无法区分。由于这个原因和其他原因,通常不可能将包含“编码字”的消息头转换为可由 RFC 822 邮件阅读器解析的未编码形式。

display-name

是一个令牌,所以我对规范的解读是你的最后一个例子是一个有效的地址 - 验证应该对编码值进行,然后解码以供稍后显示。

第 5 节还说

允许使用“编码字”来表示纯 ASCII 字符的字符串,但不鼓励使用。

因此,在这个示例中,我们鼓励您使用引用形式
"foo:bar" <[email protected]>

,而不是使用不必要的编码单词。

    

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.