GMail IMAP-如何获取对话(线程)列表?

GMail IMAP-如何获取对话(线程)列表?,gmail,imap,gmail-imap,Gmail,Imap,Gmail Imap,我正在尝试创建类似GMail的视图。我知道GMail的IMAP 有扩展名X-GM-THRID,我可以在FETCH命令中使用它,但是 返回相同数量的项目,我必须手动按 线程ID。是否有更快的方法对此进行分组?我的意思是,谷歌可以吗 imap服务器返回按线程id分组的消息列表(如gmail web界面)?更具体地说: 如果我有这个列表(线程ID |文本) 12345“你好” 12345“你好” 12345“怎么了?” 67890“你在吗?” 67890“不,我不是” 我只想从服务器获取: 12

我正在尝试创建类似GMail的视图。我知道GMail的IMAP 有扩展名X-GM-THRID,我可以在FETCH命令中使用它,但是 返回相同数量的项目,我必须手动按 线程ID。是否有更快的方法对此进行分组?我的意思是,谷歌可以吗 imap服务器返回按线程id分组的消息列表(如gmail web界面)?更具体地说:

如果我有这个列表(线程ID |文本)

  • 12345“你好”
  • 12345“你好”
  • 12345“怎么了?”
  • 67890“你在吗?”
  • 67890“不,我不是”
我只想从服务器获取:

  • 12345“你好”
  • 67890“你在吗?”
我可以这样做吗?最后,我必须自己分组,但这个解决方案效率低且速度慢(我有很多消息要分组)


向我的英语致意并致歉。

子项的“回复”标题应具有父项的消息Id标题的值

标题“References”中有另一个字段,其中包含其所有父项的消息ID

您可以根据自己的要求使用其中任何一个。

岁,但:

不令人满意的答案是:你不能——IMAP只知道消息,而不知道线程,所以你只能通过查看所有消息并聚合来获取线程信息


您可以做的是只获取UID和X-GM-THRID字段,这很快(每条消息大约40字节)。然后找到每个线程的第一条消息,然后使用UID FETCH来提取这些消息。通过在知道要获取哪些邮件之前不获取整个邮件信封,可以节省大量带宽。

这个答案不正确,请参阅Gmail的线程算法无法以这种方式处理邮件标题。您可以发出
x uid search x-gm-thrid 1234567
以获取线程中所有邮件的uid。