从 IMAP 创建电子邮件线程?

Mat*_*oli 5 email imap

我想从 IMAP 服务器上的电子邮件创建“线程视图”。

为了实现这一点,我获取了收件箱和其他文件夹中的电子邮件列表,但我需要知道哪个电子邮件正在回复哪个。IMAP 中的电子邮件之间有这样的链接吗?

例如,在 IMAP 服务器上,每封电子邮件都有一个唯一的 ID:如果电子邮件 B 是对电子邮件 A 的答复,那么 A 的 ID 是否存储在电子邮件 B 中?

leg*_*cia 7

如果您的 IMAP 服务器支持RFC 5256 中描述的“线程”功能,您可以只要求服务器为您线程化消息。

否则,您将不得不获取相关信息并在客户端上进行线程处理。RFC 描述了两种算法来做到这一点。更简单的ORDEREDSUBJECT, 只是按主题对消息进行分组,然后按日期对它们进行排序。这给出了扁平的螺纹结构。更复杂的是,REFERENCES查看每条消息的In-Reply-ToReferences标题,并将具有此类标题的消息视为具有给定 的消息的子级Message-Id


arn*_*rnt 5

经典的方法是检索 message-id 和 references 字段。如果两条消息在消息 ID 或引用中包含相同的消息 ID,则它们在同一线程中。

Gmail 有一个新的和 IMO 更好的方法:每个线程都有一个数字 ID,您可以使用x-gm-thrid检索它。谷歌已经发布了使用它的各种语言的示例代码(该代码附近应该有链接)。