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

sla*_*yer 9 email outlook gmail email-client email-headers

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

我的问题是:是否所有电子邮件客户端(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:"
Run Code Online (Sandbox Code Playgroud)

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

第一封电子邮件:

Message-ID <foobar-1234-0@server.com>
In-Reply-To: not provided
References: not provided
Run Code Online (Sandbox Code Playgroud)

第二封邮件:

Message-ID <foobar-1234-1@server.com>
In-Reply-To: <foobar-1234-0@server.com>
References: <foobar-1234-0@server.com>
Run Code Online (Sandbox Code Playgroud)

第三封邮件:

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>
Run Code Online (Sandbox Code Playgroud)

小智 7

艾莉亚是正确的。我发现大多数电子邮件客户端/服务器使用 In-Reply-To(或更常见的是,References)标头。尽管如此, RFC 2822 标准并不要求它(正如您所指出的)。

有几种方法可以解决这个问题/处理这个问题。您从电子邮件中提取的内容越多,它就越有可能连接到正确的电子邮件链。我尝试优先考虑此匹配,并尝试了以下操作:

  • 如果电子邮件有 In-Reply-To 标头,请将其添加到参考列表中
  • 使用引用(如果存在)来匹配其他电子邮件的消息 ID(在您使用的任何系统/代码中)
  • 如果交换的电子邮件具有特定的参考号,例如 [ref: XXXXXXXXX :ref](默认情况下 Salesforce 将电子邮件格式设置为案例),您可以检查该参考号。缺点是,客户/代理商可以将其删除。