18

我这可能是一个奇怪的问题,但我想我会继续问。比如说,我通过一个特殊的客户端使用IMAP SMTP发送一封电子邮件。此客户端在发送电子邮件之前向电子邮件添加了一些自定义标头。收件人收到这封电子邮件并直接回复我(可能还有 CC 的几个人)。

我的问题是:鉴于上述示例,这些 X-headers 是否会在线程中的所有新消息中持续存在?

我能想到的一件事是客户会知道它发送的原始电子邮件。对此电子邮件的所有后续响应都将具有一个“Reply-To”标头,其值等于上一封电子邮件的“Message-Id”。我不明白为什么在我得到客户端发送的原始消息之前我无法爬取这些回复线程,从而派生出原始的自定义标头。

也许我在想这个。有什么建议么?:)

4

2 回答 2

26

消息回复不一定包含原始消息的任何内容。MUA 可能会建议对原始主题进行修改(例如,以“Re:”开头)版本,并且显然地址也用于适当的默认值。消息的其他内容都不构成回复的一部分(除非发件人故意包含它,如引用或转发)。您在消息中的任何 X- 标头肯定不会包含在回复中(除非您可以控制该 MUA)。

但是,您跟踪原始消息的计划当然是可行的:请参阅RFC 5322的第 3.6.4 节。每条消息都应该(不是必须)有一个 Message-ID 标头,并且在适当的时候应该有 In-Reply-To 和 References 标头。

“消息 ID:”字段包含一个唯一的消息标识符。“References:”和“In-Reply-To:”字段各自包含一个或多个唯一的消息标识符,可选地由 [whitespace] 分隔。

提及 In-Reply-To 以标识正在回复的消息(或消息),而 References 标识整个对话线程。References 标头旨在包含要回复的消息的 References 标头的全部内容,因此您只需要最后一条消息即可识别整个线程。

请注意,In-Reply-ToReply-To不是一回事(后者指定了发件人希望将回复发送到的地址)。

假设您有原始消息,那么您应该能够使用任何回复的 References 标头来识别原始消息。并非每个 MUA 都会正确处理引用或回复,但大多数都会正确处理。

于 2011-09-29T02:11:35.823 回答
5

据我所知,没有理由认为任何电子邮件客户端都会传播它不理解的任何标题行。大多数人会保留主题(通常在必要时添加“Re:”)并从上一条消息的标题中派生出他们的“To:”和“Cc:”行,但仅此而已。我想有些(但不是全部)会生成一条“In-Reply-To”行,但仅此而已。

您让客户端爬回线程以查找特定标头的想法听起来可能是可行的,但是如果您想要该功能,则必须编写自己的电子邮件客户端,并且您仍然会被阻止事实上,并非所有电子邮件客户端都以任何方式保留消息线程。

于 2011-09-29T01:53:55.073 回答