8

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

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

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

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

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

4

3 回答 3

2

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

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

于 2011-01-27T03:28:20.997 回答
2

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

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

于 2011-02-01T03:27:34.697 回答
1

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

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

于 2011-01-27T03:27:15.960 回答