Email 强制新的电子邮件线程

Email 强制新的电子邮件线程,email,mime,email-headers,Email,Mime,Email Headers,在编写基于特定事件发送电子邮件的应用程序时,我希望强制执行以下规则:每封电子邮件都会启动一次新的“对话” 类似Gmail的电子邮件系统将电子邮件信息分组为“对话”,这样,邮件A被认为是对邮件B的回复。他们使用很多方法来确定您回复的消息,例如Subject:header或In Reply to:header 然而,由于自动化电子邮件有时会重复使用主题行(例如“服务器foo.bar.com上的监控故障”),因此邮件服务通常会假定给定的电子邮件实际上是对具有相同主题行的前一封邮件的回复,即使这两封邮件

在编写基于特定事件发送电子邮件的应用程序时,我希望强制执行以下规则:每封电子邮件都会启动一次新的“对话”

类似Gmail的电子邮件系统将电子邮件信息分组为“对话”,这样,邮件A被认为是对邮件B的回复。他们使用很多方法来确定您回复的消息,例如Subject:header或In Reply to:header

然而,由于自动化电子邮件有时会重复使用主题行(例如“服务器foo.bar.com上的监控故障”),因此邮件服务通常会假定给定的电子邮件实际上是对具有相同主题行的前一封邮件的回复,即使这两封邮件不相关。这可能会导致混乱,客户端可能会丢失重要通知

是否有可能(如果有,那么如何)在邮件标题中表明,尽管主题行中存在潜在的相似之处,但给定的电子邮件不是对任何其他邮件的回复?


由于客户端可以看到电子邮件主题本身,因此我更希望避免这样的愚蠢行为:
“主题:自动提醒$task[”.md5sum(date())。“]”“

尽管您可以作为用户在Gmail中禁用对话线程,但无法告诉它不要对发送给其他人的电子邮件执行线程


为什么不在末尾加上日期呢?这样,您将获得更容易访问的信息,并且您不应该将一大堆旧邮件作为一个线程的一部分拖到一起。

对于所有电子邮件系统,实际上没有一种方法可以做到这一点。即使你想好了如何使用Gmail,Mail.app、Thunderbird和Outlook的线程对话模式又如何呢?当然,每个支持这种功能的邮件客户端都会以不同的方式确定消息在给定会话中的成员身份


也就是说,似乎大多数客户机使用发件人、回复和主题的组合。Gmail web客户端使用内部线程标识符更准确地跟踪web客户端发送的电子邮件。您是否考虑过使用不同的电子邮件地址发送邮件?以Gmail为例,
-email@gmail.com
与一些电子邮件相同+1234@gmail.com。为了邮件路由,在
+
之后的任何内容都会被剥离并忽略,但我认为在计算线程成员资格时不会忽略它。我不确定这个寻址规则是特定于Gmail的,还是标准的一部分。

大多数电子邮件客户端根据replyto、References、Thread Index(来自Outlook)中的以下标题组织线程。因此,如果你不在电子邮件中指定这些内容,我认为它不会被视为任何现有线程的一部分(除非基于基本主题的线程)


现在,GMail也考虑了这个问题。所以我想如果你想改变主题的话。您必须进行一些实验。

这似乎是一个有效的答案,尽管我还没有尝试过: