7

所以,Gmail 的 IMAP 有点“奇怪”。他们使用 IMAP 文件夹来表示标签。我相信 IMAP 中的电子邮件通常只能属于一个“文件夹”,但是对于 Gmail,一封电子邮件可以属于许多“文件夹”,这为我们提供了非常接近标签的功能。

我的问题是,我正在编写一个 gmail 客户端(这样,加星标、删除和归档等操作比标准 imap 客户端更直观一些),但我希望能够显示给定电子邮件的哪些文件夹(标签)它在里面。

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

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

4

2 回答 2

7

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

要获取特定消息的标签,您可以使用X-GM-LABELS属性调用 IMAP FETCH 命令。请参阅访问 Gmail 标签:X-GM-LABELS

于 2011-09-06T21:26:16.233 回答
0

最直接(虽然不是万无一失)的方法是获取消息Message-ID标题的值。然后遍历“标签”文件夹并沿以下行执行IMAP SEARCH

A001 SEARCH HEADER MESSAGE-ID "your-msgid-value"

如果您在未标记的SEARCH响应中返回任何结果,则该消息具有选定的“文件夹”标签。

于 2011-01-16T12:12:47.200 回答