电子邮件标头值中是否允许包含 HTML 内容?

电子邮件标头值中是否允许包含 HTML 内容?

在解决电子邮件消息显示问题的过程中,我注意到电子邮件标题包含 HTML。

例子:

From: <[email protected]>
To: <[email protected]>
Date: 11 Feb 13 12:00:23
Subject: Foo Test
Message: <html><head><meta http-equiv="Content-Language" content="en-us"
         <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
         <title>Foo Test 123</title><body>Hi
Message-ID: <[email protected]>

邮件标头由我不管理的上游服务器添加。我看到的原始问题是标头中的 HTML 文本缺少一个标签,因此电子邮件阅读器认为邮件的其余部分(包括其他标头)是邮件正文的一部分(这导致 mime 源显示在正文中,而不是呈现的 HTML 中)。

在我看来这绝对是错误的——我无法想象在标题中包含 HTML 会有什么用处。话虽如此,我似乎找不到 RFC 中明确定义标题中可以(或不能)包含什么的部分。有人能给我指出正确的方向吗?

具体来说,我想知道:电子邮件标题中可以放置哪些类型的内容以及标题名称/值中可以指定哪些类型的字符有任何限制吗?

答案1

“消息”标头来自哪里?消息是否包含正文,或者正文是否以某种方式被塞进了“消息”标头?“消息”不是在RFC 5322并且它不在 IANA 的永恒的或者临时列表。可能某个地方的邮件阅读器会解释它,但大多数情况下,“消息:”可能读作“X-this-will-likely-be-ignored:”

答案2

对于标题中可以放置的内容几乎没有任何限制。rfc5322 第 2.2 节只规定了头字段名称必须是可打印字符。只要这是真的,并且内容是“折叠”正确地说,你可以在标题中放入几乎任何内容。

我还看到过,如果编码不正确,标题会被错误地呈现为正文,最终传输一个空白行,以便客户端认为正文已经开始,因此您可以检查编码以确保它不是罪魁祸首。

然而我认为杰拉尔德是正确的,因为您可能不想问消息格式是否合法,而应该问是谁以及为什么有人将其添加到标题中。

答案3

这不是 HTML,而是RFC 822(第 3.4.6 节)用于分隔邮箱。相关部分内容如下:

There are three types of brackets which must occur in matched
pairs, and which may NOT be nested:
o Colon/semi-colon (":" and ";") are   used  in  address
  specifications  to  indicate that the included list of
  addresses are to be treated as a group.
o Angle brackets ("<" and ">")  are  generally  used  to
  indicate  the  presence of a one machine-usable refer-
  ence (e.g., delimiting mailboxes), possibly  including
  source-routing to the machine.

也有解释称第 6.1 节(语法)如下:

mailbox     =  addr-spec                    ; simple address
            /  phrase route-addr            ; name & addr-spec
route-addr  =  "<" [route] addr-spec ">"

这主要用于以明文形式显示一个人的姓名以及他们的电子邮件地址,例如

John Doe <[email protected]>

在您给出的示例中,名称为空白,后跟电子邮件地址。

相关内容