如何编写代码以对电子邮件进行分组对话

8

...类似于Gmail!

现在,当主题相同且带有附加前缀(re:,re: re:等)时,将它们合并在一起变得足够容易。

但是,当您回复等操作时,可以包括其他人,并且他们会显示在原始“对话”线程中。

我已经有一段时间没有查看标题了,但想知道是否有额外的X-??????标题正在使用或是否属于某个RFC /约定的一部分。

当然,任何已经执行此操作的示例代码都将非常好!

3个回答

10

嗯,这完全取决于你如何保存一些数据。

电子邮件标题栏已经为您提供了:

Message-ID:自动生成的字段;用于防止多次发送和在In-Reply-To中引用(见下文)。

In-Reply-To:回复消息所应答的消息的Message-ID。用于将相关邮件链接在一起。此字段仅适用于回复邮件。

这些可以用来将后续的电子邮件链接成一个会话组。


参考标签是一个更好的指示器,根据以前的经验,但是不同的客户端/服务器生成/修改这些标签的方式存在差异,问题在于识别是否存在统一的技术,而不是传统的持续识别-构建-识别-修补-构建循环。 - Kumar
我非常怀疑你能找到与跨MUA兼容的不同解决方案。我稍微搜索了一下,发现了这篇有趣的小文章,或许可以提供额外的见解。 - Khez
@Kumar:如果我没记错的话,"References:"头部是来自新闻组(也称为NNTP),并且在电子邮件中主要存在于Netscape Communicator。 - tc.

8

2
非常有趣的帖子,尽管已经十年了。我想知道现在的统计数据是什么。 - designosis

4

我相信大多数程序都会将元数据嵌入消息中,以便在回复时可以追溯到原始消息。其他任何内容都像猜测一样,正如您所指出的,只有主题和发件人/收件人是不够的。

例如,Outlook在消息中嵌入线程索引和消息ID作为元数据,可以用于跟踪用户之间的对话,无论后来是否添加了其他接收者:

> Thread-Index: AcvvoZr5wUUl1mneRmCpi5P/XCjYWQ==  
> Message-ID: <D3B87CB5E0A0F54EABF3B2319E4120AF18146392@my.mail.server>

2
嗯,这很有趣,如果服务器(gmail、hotmail、yahoo等)能提供这个或类似的“标签”就太好了! - Kumar
1
我正在为我们的内部工单系统做类似的事情,该系统监控一个邮箱。在回复/转发邮件时,有几个唯一的字段/ID是不变的。我使用这些字段将多封电子邮件分组成一个工单。当时我用GMail和Outlook/Exchange进行了测试。 - Uwe Keim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接