如何识别电子邮件属于现有线程或对话

问题描述 投票:0回答:3

我们有一个内部 .NET 案例管理应用程序,可以自动从电子邮件创建新案例。我希望能够识别与原始电子邮件相关的其他电子邮件,以便我们可以防止创建重复的案例。

我观察到许多(但不是全部)电子邮件都有一个看起来很有用的线程索引标头。

有人知道我们可以使用的简单算法或包吗?

pattern-matching email
3个回答
30
投票

据我所知,不会有 100% 万无一失的解决方案,因为并非所有电子邮件客户端或网关都保留或尊重所有标头。

但是,通过以下方式您将获得相当高的命中率:

  • 每封电子邮件都应该有一个唯一的“消息 ID”字段。找到这个,并将其记录下来作为案例的一部分。 (参见RFC-822

  • 如果您收到两条具有相同消息 ID 的消息,请丢弃第二条消息,因为它是重复的。

  • 检查“回复中”字段,如果显示的 ID 与已知的消息 ID 匹配,则您知道该电子邮件是相关的。

  • “References”和“Original-Message-ID”标头具有相似的含义。

如果您的系统曾经生成电子邮件,请在主题行中包含 CaseID#,以便您在收到电子邮件后可以搜索它(例如:[Case#20081114-01]);大多数人在回复时不会编辑主题行。

互联网标准 RFC-822RFC-2076RFC-4021 可能有助于进一步阅读。

鉴于总会有遗漏的消息(无论出于何种原因),您可能还需要案例管理系统中的相关功能 - 例如,“作为重复案例关闭”或“与重复案例合并”以及工具以便更轻松地查找重复项。


17
投票

使用JWZ线程算法


0
投票

注意 GMail 还支持 ThreadID,但其他邮件服务器(可能)可能不支持:https://support.cloudhq.net/understand-the-distinction- Between-message-id-and-thread-id -in-gmail/

© www.soinside.com 2019 - 2024. All rights reserved.