强制使用新的电子邮件线程

Posted

技术标签:

【中文标题】强制使用新的电子邮件线程【英文标题】:Force a new email thread 【发布时间】:2011-06-16 07:00:12 【问题描述】:

在编写基于特定事件发送电子邮件的应用程序时,我想强制执行这样的规则,即每封电子邮件都会开始一个新的“对话”。

Gmail 等电子邮件系统将电子邮件消息分组到“对话”中,因此消息 A 被假定为对消息 B 的回复。他们使用许多方法来确定您要回复的邮件,例如 Subject: 标头或 In-Reply-To: 标头。

但是,由于自动电子邮件有时会重复使用主题行(例如“服务器 foo.bar.com 上的监控失败”),因此邮件服务通常会假设给定的电子邮件实际上是回复到具有相同主题行的上一条消息,即使两者无关。这可能会导致混淆,并且客户可能会错过重要通知。

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

由于电子邮件主题本身对客户可见,我宁愿避免这样的愚蠢:"Subject: Automated reminder for $task [".md5sum(date())."]"

【问题讨论】:

这似乎是一个有效的答案,虽然我还没有尝试过(还):***.com/a/25435722/64911 【参考方案1】:

实际上并没有一种方法可以对所有电子邮件系统执行此操作。即使您确实知道如何绕过 Gmail,Mail.app、Thunderbird 和 Outlook 的线程对话模式又如何呢?当然,支持此类功能的每个邮件客户端都会以不同的方式确定消息在给定对话中的成员资格。

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

【讨论】:

【参考方案2】:

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

现在,GMail 还考虑了主题。所以我想如果您也想更改主题行。你必须尝试一些。

【讨论】:

【参考方案3】:

虽然您可以在 Gmail 中以用户身份禁用对话线程,但没有办法告诉它不要线程您发送给其他人的电子邮件。

为什么不将日期附加到末尾?这样一来,您将获得更易于访问的信息,并且您不应该将一大堆旧消息作为线程的一部分拖出来。

【讨论】:

以上是关于强制使用新的电子邮件线程的主要内容,如果未能解决你的问题,请参考以下文章

强制电子邮件不能分组到对话中

阻止通知电子邮件上的Gmail线程对话

防止通知电子邮件中的 Gmail 线程对话

ASP.NET MVC 4、Internet 应用程序模板、SimpleMembership - 帐户模型 - 强制执行唯一的用户名和电子邮件

在java中为发送邮件ID创建新线程

如何强制电子邮件程序显示使用 php 在 html 电子邮件中发送的图像?