Gmail IMAP,搜索X最近活动的Gmail主题的最佳方法

时间:2011-09-06 15:02:28

标签: oauth gmail imap gmail-imap javax.mail

我正在寻找获取最近X个最活跃的Gmail主题列表的最佳方式。

背景

我正在Google Apps for Education域中使用Java访问IMAP with OAuth。可以使用Gmail Atom inbox feed列出包含未读消息的最后20个线程。访问此源的速度似乎比我设法使用OAuth / IMAP生成的任何内容快得多。

使用IMAP方法优于Gmail Atom收件箱Feed的优势在于IMAP我可以访问任意数量的邮件(不只是20个),查看阅读邮件,获取线程大小,获取任何关联的Google标签,获取配额详细信息并检查标志。从本质上讲,这将为我的用户提供更多类似Gmail的体验(我只需要为我们的门户网站提供只读体验)。我的问题是IMAP访问速度明显慢于Atom提要。比较明智的IMAP方法需要大约10秒,而Atom提要通常在2秒内返回。

我知道并且一直在使用Gmail IMAP ExtensionsGmail Advanced Search syntax

当前方法:

想象一下,我想从我的IMAP收件箱中获得前40个主题。目前我下载一些任意数量的消息说(40 * 4),只获取 X-GM-THRID 。我遍历存储线程ID的这些消息(如果需要,可以获取更多消息),直到我耗尽收件箱消息列表或者达到我的目标线程数。

然后我有一个Gmail线程ID列表,我可以使用它来执行IMAP搜索(使用适当的FetchProfile.Item,具体取决于所需的消息详细信息)。

我遍历搜索结果,产生类似的东西(使用精彩的Google Guava/Google Collections Multimap):

Multimap<Long, Message> threadMultiMap = LinkedListMultimap.create();

这很容易按摩:

LinkedHashMap<Long, Message[]> threadMap; 

有没有比通过INBOX迭代更好的方法,直到找到X个不同的消息线程?

1 个答案:

答案 0 :(得分:1)

实际上不是答案,而是相关查询。


马克,根据您的api请求,我发表评论作为答案(http://code.google.com/p/java-gmail-imap/wiki/DisplayingGmailThreadBasedView

你的lib是否支持3条腿oauth,我试图在repo的源代码中寻找XoauthAuthenticator而无法找到它。

由于


嗨agallego,

我在XOAUTH中使用java-gmail-imap。 JavaMail中没有明确要求任何更改来使用XOAUTH。

如果您查看XOAUTH项目(google-mail-xoauth-toolsgoogle-mail-xoauth-tool-java-two-legged),您会发现可以创建可用于对Gmail进行身份验证的SASL提供程序。参见例如XoauthAuthenticator.java

我希望这有帮助,

标记