是否有可以接收电子邮件的Java库,将其与电子邮件数据库进行比较,并查找可能来自与邮件列表类似的电子邮件“线程”的其他电子邮件?
答案 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帖子
答案 1 :(得分:2)
实际上我已经纠正了可以使用的算法的实现。取决于您使用什么类型的API来阅读您的电子邮件。
http://www.jwz.org/doc/threading.html
这描述了可用于重构线程的算法。电子邮件很棘手,很多客户都没有正确实施标准,所以它变得很痛苦。
答案 2 :(得分:1)
顺便说一下,谷歌搜索“线程”而非“线程”的效率要高得多,我刚发现