Gmail IMAP:以任何方式查找特定邮件所在的所有标签(文件夹)?

时间:2010-11-13 16:50:10

标签: gmail imap gmail-imap

因此,Gmail的IMAP有点'怪异'。他们使用IMAP文件夹来表示标签。我通常认为IMAP中的电子邮件只能属于一个“文件夹”,但是对于Gmail,电子邮件可以属于许多“文件夹”,这使我们能够非常接近标签。

我的问题是,我正在编写一个gmail客户端(因此像Starring,删除和存档这样的工作比标准的imap客户端更直观),但我希望能够显示给定的电子邮件,它所在的文件夹(标签)。

据我所知,这并不容易(我必须遍历每个文件夹中的每条消息,看看它在哪些消息中)。

有谁知道这样做的整洁方法?或者我是否正确地假设没有简单的方法?

2 个答案:

答案 0 :(得分:7)

Gmail提供了一组IMAP扩展程序,允许IMAP客户的作者通过IMAP提供更类似Gmail的体验。请参阅Gmail IMAP Extensions (X-GM-EXT-1)

要获取特定消息的标签,您可以使用 X-GM-LABELS 属性调用IMAP FETCH命令。见Access to Gmail labels: X-GM-LABELS

答案 1 :(得分:-1)

最简单(尽管不是万无一失)的方法是获取消息“Message-ID标题的值。然后遍历“label”文件夹并沿着

行执行IMAP SEARCH
A001 SEARCH HEADER MESSAGE-ID "your-msgid-value"

如果您在未标记的SEARCH响应中得到任何结果,则该邮件会显示所选的“文件夹”标签。