假设一封电子邮件具有以下标头字段:
To: =?utf-8?q?Foo_Bar?= <1234567890123456789012345678901234567890123456789012345678901234@abcdefghiabcdefghiabcdefghiabcdefghiabcdefghiabcdefghiabcdefghi.com>
有没有办法折叠标题
- 完全符合RFC 5322
- 这样电子邮件仍然被常用的 MTA 接受,并且
- 没有行超过 78 个字符?
我知道行长的硬性限制是 998 个字符,但我想知道是否也可以满足所有应该的要求。如果我理解增强巴库斯-瑙尔形式
domain-literal = [CFWS] "[" *([FWS] dtext) [FWS] "]" [CFWS]
dtext = %d33-90 / ; Printable US-ASCII
%d94-126 / ; characters not including
obs-dtext ; "[", "]", or "\"
在第 3.4.1 节中,可以正确地将折叠空格插入域文字中,并且以下内容应该是有效的:
To: =?utf-8?q?Foo_Bar?=
<1234567890123456789012345678901234567890123456789012345678901234@abcdefgh
iabcdefghiabcdefghiabcdefghiabcdefghiabcdefghiabcdefghi.com>
但是,最近版本的 postfix 和 exim 拒绝了这一点:
501: <1234567890123456789012345678901234567890123456789012345678901234@abcdefgh: '>' missing at end of address
要么两个 MTA 都被破坏(这似乎不太可能),要么我对 RFC 的解释是错误的。
万一有人遇到类似问题的附录:
在发布问题之前,我实际上尝试折叠,@
如jstedfast.
的 RFC-conformant示例所示,但得到了相同的错误消息。事实证明,这不是 MTA 的错,而是我使用的 SMTP 客户端库的错,它从标头中提取了收件人地址以生成SMTP 的命令,但未能过滤掉换行符。RCPT TO: