我正在调试一个无法解析来自一个电子邮件服务的标头的MIME解析器。电子邮件服务包括一个标题,该标题由完整位于下一行的字段主体组成,如下所示:
Message-Id:
<12345.67890.abcdef@example.com>
这合法吗?
RFC-822为有效标题指定以下语法:
3.2. HEADER FIELD DEFINITIONS
These rules show a field meta-syntax, without regard for the
particular type or internal syntax. Their purpose is to permit
detection of fields; also, they present to higher-level parsers
an image of each field as fitting on one line.
field = field-name ":" [ field-body ] CRLF
field-name = 1*<any CHAR, excluding CTLs, SPACE, and ":">
field-body = field-body-contents
[CRLF LWSP-char field-body]
field-body-contents =
<the ASCII characters making up the field-body, as
defined in the following sections, and consisting
of combinations of atom, quoted-string, and
specials tokens, or else consisting of texts>
空字符串是否满足field-body-contents以允许字段正文的[CRLF LWSP field-body]
部分?
答案 0 :(得分:3)
是的,完全允许在空白处折叠。通常,只有当线路太长时才会这样做,但无论如何它都是完全可选的;没有要求折叠或避免折叠。 (当然,如果一条线太长而无法满足RFC5321,它有折叠,或以某种方式缩短。现在,RFC2047比传统的空白折叠更加通用和透明。)< / p>
如https://tools.ietf.org/html/rfc5322#section-2.2.3中所述,折叠线是一条“逻辑线”。 (请注意,你们822早已被新标准所取代; 5322是目前的替代品。)