是否所有电子邮件客户端都使用电子邮件标题中的"In-Reply-To"字段?



当任何电子邮件带有Message-ID标头时,对它的任何回复都包括In-Reply-To,命名该ID以及可以命名父邮件ID列表的References。 因此,电子邮件客户端在线程视图中查看电子邮件列表时可以使用此信息来构造线程。

我的问题是:在回复任何现有电子邮件时,是否所有电子邮件客户端(Outlook,Gmail,Exchange等(都会在电子邮件标题中附加In-Reply-To字段?

我参考了 RFC 2822,但它说In-Reply-To字段是可选的。

Though optional, every message SHOULD have a "Message-ID:" field.
Furthermore, reply messages SHOULD have "In-Reply-To:"

In-Reply-To电子邮件标头的示例:

第一封电子邮件:

Message-ID <foobar-1234-0@server.com>

第二封电子邮件:

Message-ID <foobar-1234-1@server.com>
In-Reply-To: <foobar-1234-0@server.com>
References: <foobar-1234-0@server.com>

第三封电子邮件:

Message-ID <foobar-1234-2@server.com>
In-Reply-To: <foobar-1234-1@server.com>
References: <foobar-1234-0@server.com> <foobar-1234-1@server.com>

Arya 是正确的。我已经看到大多数电子邮件客户端/服务器确实使用回复(或更常见的参考(标头。虽然,RFC 2822 标准不需要它(正如您指出的那样(。

有几种方法可以解决这个问题/可以解决这个问题。您可以从电子邮件中提取的越多,它就越有可能线程到正确的电子邮件链。我试图优先考虑这种匹配,并尝试了如下方法:

  • 如果电子邮件具有"回复中"标头,请将其添加到"参考"列表中
  • 使用引用(如果存在(与其他电子邮件的邮件 ID 匹配(在您正在使用的任何系统/代码中(
  • 如果交换的电子邮件具有特定的参考编号,例如[ref: XXXXXXXXX :ref](默认情况下,Salesforce将电子邮件格式设置为此类(,您可以检查一下。缺点是,客户端/代理可以将其删除。

给出的简短答案"否"很可能是正确的,但我想指出为什么会这样:

首先,当前规范是 RFC 5322:Internet 消息格式,日期为 2008 年 10 月,正确的短语是">标头字段"。

使用了Message-IDIn_Reply-ToReferences的 SHOULD 规范而不是 MUST,因为这些标头字段在技术上对于成功的电子邮件交换不是必需的(另请参阅 RFC 2119:在 RFC 中用于指示需求级别的关键字(。

此外,还有非常差的电子邮件客户端,特别是在发送自动消息时,它们创建了相当简约的标头字段。 因此,像sendmail这样的MTA(邮件传输代理(可以配置为添加缺少的标头字段,如Message-IDDate,但它们不会添加In-Reply-ToReferences,因为MTA实际上无法知道一般。 实际上,接收初始邮件的 MSA(邮件提交代理(应该这样做,但从历史上看,MTA 也是 MSA。

尽管如此,虽然在技术上不是必需的,但RFC 2119清楚地说明了SHOULD

这个词,或形容词"推荐",意味着在特定情况下可能存在正当理由忽略 特定项目,但必须理解其全部含义,并且 在选择不同的课程之前仔细权衡。

早在 1985 年左右,就有一个名为"ELM"(当时由 Dave Taylor 的 HP(的开源"图形"(即:TUI(终端用户界面((电子邮件程序(MUA,邮件用户代理(支持"In-Reply-To"标头字段,因此实际上现代程序几乎没有理由不这样做。

相关内容

最新更新