因此,Gmail的IMAP有点'怪异'。他们使用IMAP文件夹来表示标签。我通常认为IMAP中的电子邮件只能属于一个“文件夹”,但是对于Gmail,电子邮件可以属于许多“文件夹”,这使我们能够非常接近标签。
我的问题是,我正在编写一个gmail客户端(因此像Starring,删除和存档这样的工作比标准的imap客户端更直观),但我希望能够显示给定的电子邮件,它所在的文件夹(标签)。
据我所知,这并不容易(我必须遍历每个文件夹中的每条消息,看看它在哪些消息中)。
有谁知道这样做的整洁方法?或者我是否正确地假设没有简单的方法?
答案 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”文件夹并沿着
A001 SEARCH HEADER MESSAGE-ID "your-msgid-value"
如果您在未标记的SEARCH
响应中得到任何结果,则该邮件会显示所选的“文件夹”标签。