我这可能是一个奇怪的问题,但我想我会继续问问。比如,我通过特殊客户端使用 IMAP SMTP发送电子邮件。此客户端在发送电子邮件之前会向电子邮件中添加一些自定义标头。收件人收到此电子邮件并直接回复我(也可能是CC的一些人)。
我的问题是:鉴于上面的例子,这些X-header是否会在线程中的所有新消息中持续存在?
我能想到的一件事是客户会知道它发送的原始电子邮件。对此电子邮件的所有后续回复都将有一个“回复”标题,其值等于上一封电子邮件的“Message-Id”。在看到客户端发送的原始邮件之前,我不明白为什么我无法抓取这些回复帖子,从而导出原始的自定义标题。
也许我在想这个。有什么建议? :)
答案 0 :(得分:23)
邮件回复不一定包含原始邮件的任何内容。 MUA可能建议修改(例如,前缀为“Re:”)版本的原始主题,并且显然地址也用于适当的默认值。消息的其他内容都不构成答复的一部分(除非发件人故意包括它,如引用或转发)。您邮件中的任何X-header肯定不会包含在回复中(除非您可以控制该MUA)。
但是,您跟踪原始邮件的计划当然是可行的:请参阅RFC 5322的第3.6.4节。每条消息都应该(不一定)具有Message-ID标头,并且在适当时应该具有In-Reply-To和References标头。
“Message-ID:”字段包含单个唯一的消息标识符。 “引用:”和“回复于:”字段均包含一个或多个唯一的消息标识符,可选地由[空格]分隔。
提及In-Reply-To以识别正在被回复的消息(或多个消息),而References标识整个会话线程。 References标头用于包含要回复的消息的References标头的全部内容,因此您只需要最后一条消息来标识整个线程。
请注意, In-Reply-To 和回复不是一回事(后者指定了发件人希望回复的地址)。
假设您有原始邮件,那么您应该能够使用任何回复的References标头来标识原始邮件。并非每个MUA都能正确处理引用或In-Reply-To,但大部分都会。
答案 1 :(得分:4)
据我所知,没有理由认为任何电子邮件客户端会传播任何它不理解的标题行。大多数人会保留主题(通常在必要时添加“Re:”)并从前一个消息的标题中派生出他们的“To:”和“Cc:”行,但这就是它。我想一些(但不是全部)会生成一个“In-Reply-To”行,但就目前而言。
让客户端通过线程查找特定标头的想法听起来像是可行的,但是如果你想要这个功能,你必须编写自己的电子邮件客户端,而你仍然是被所有电子邮件客户端以任何方式保留消息线程这一事实所阻止。