在编写基于某些事件发送电子邮件的应用程序时,我想强制执行以下规则:每封电子邮件都会启动一个新的“对话”。
将Gmail等电子邮件系统组合为“对话”,以便将消息 A 设置为对 B 消息的回复。他们使用许多方法来确定您要回复的邮件,例如Subject:标头或In-Reply-To:标头。
但是,由于自动电子邮件有时会重复使用主题行(例如“监视服务器foo.bar.com上的失败”),因此邮件服务通常会认为给定的电子邮件实际上是回复到具有相同主题行的上一条消息,即使两者不相关。这可能会导致混淆,客户可能会错过重要通知。
是否有可能(如果是,那么如何)在您的邮件标题中发信号通知给定的电子邮件不是对任何其他电子邮件的回复,尽管主题行中可能存在任何相似之处?
由于客户可以看到电子邮件主题本身,我宁愿避免像这样的愚蠢:"Subject: Automated reminder for $task [".md5sum(date())."]"
答案 0 :(得分:2)
对于所有电子邮件系统,实际上没有办法实现此目的。即使您确定如何解决Gmail问题,Mail.app,Thunderbird和Outlook的线程会话模式呢?当然,支持此类功能的每个邮件客户端都会以不同的方式确定邮件对给定会话的成员资格。
话虽如此,似乎大多数客户使用发件人,回复和主题的组合。 Gmail网络客户端使用内部线程标识符来更准确地跟踪从Web客户端发送的电子邮件。你有没有想过从不同的电子邮件地址发送?例如,使用Gmail,some-email@gmail.com
与some-email+1234@gmail.com
相同。为了邮件路由而剥离和忽略+
之后的任何内容,但我不认为在计算线程成员资格时会忽略它。我不确定这个寻址规则是否是特定于Gmail的,或者它是否是标准的一部分。
答案 1 :(得分:2)
大多数电子邮件客户端根据以下标头InReplyTo,References,Thread-Index(来自Outlook)组织线程。因此,如果您未在电子邮件中指定这些内容,我认为它不会被视为任何现有线程的一部分(除非基于主题的基本线程已启用)。
现在,GMail还考虑了主题。所以我想如果你也想改变主题。你必须尝试一些。
答案 2 :(得分:1)
虽然您可以在用户名中停用Gmail中的会话线程,但是无法告诉它不要将您发送给其他人的电子邮件发送给您。
为什么不将日期追加到最后?这样你就可以获得更容易访问的信息,并且你不应该将一大堆旧消息作为线程的一部分拖出来。