用于通过线程将电子邮件分组的Java库?

时间:2010-02-24 22:12:12

标签: java email email-integration

是否有可以接收电子邮件的Java库,将其与电子邮件数据库进行比较,并查找可能来自与邮件列表类似的电子邮件“线程”的其他电子邮件?

3 个答案:

答案 0 :(得分:7)

可能没有我知道的库,但您可以通过查看电子邮件中的标头值来完成此操作。当有人回复消息时,电子邮件中有几个标题放在那里。以下是讨论的标题。

<强>邮件ID 每封电子邮件都带有一个Message-ID标头,这是一个全球唯一的垃圾串。有时它是一个GUID,但大多数时候它是GUID +域的某种组合。格式并不重要,它只是一些独特的字符串。

<强>在-回复 In-Reply-To保存此电子邮件作为回复的邮件ID的值。

<强>参考 可以包含从当前消息返回到线程开头的链中所有消息的消息ID列表。如果线程很长,则此列表可能在中间缩写,但应始终存在第一个和最后一个消息。 (较旧的邮件软件使用此字段来标识当前消息所指的其他消息。)

Outlook使用Thread-Index,其中包含单个线程的所有电子邮件都将携带。

您可以使用旧的JavaMail来获取这些标头,因此以这种方式重建线程应该不会太难。不幸的是,没有像Thread-Index

这样的标准标题

http://people.dsv.su.se/~jpalme/ietf/message-threading.html

Thread-index上的StackoverFlow帖子

How does the email header field 'thread-index' work?

答案 1 :(得分:2)

实际上我已经纠正了可以使用的算法的实现。取决于您使用什么类型的API来阅读您的电子邮件。

http://www.jwz.org/doc/threading.html

这描述了可用于重构线程的算法。电子邮件很棘手,很多客户都没有正确实施标准,所以它变得很痛苦。

答案 2 :(得分:1)

顺便说一下,谷歌搜索“线程”而非“线程”的效率要高得多,我刚发现