oauth - Gmail IMAP,为X个最新事件的Gmail线程搜索最佳方法

标签 oauth gmail imap gmail-imap javax.mail

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

背景:

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

与IMAP相比,使用IMAP方法优于Gmail Atom收件箱提要的优势在于,我可以访问任意数量的邮件(不仅是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个不同的消息线程更好的方法?

最佳答案

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

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

您的lib是否支持3条腿的oauth,我尝试在存储库中的源上查找XoauthAuthenticator,但找不到它。

谢谢

嗨agallego,

我在XOAUTH中使用java-gmail-imap。 JavaMail中没有明确要求进行任何更改才能与XOAUTH一起使用的内容。

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

我希望这有帮助,

标记

关于oauth - Gmail IMAP,为X个最新事件的Gmail线程搜索最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7322001/

相关文章:

google-app-engine - 将 AppEngine/Go Users API 与 OAuth : code sample, 工作流一起使用,有什么帮助吗?

c++ - 如何使用 Qt oauth 创建登录页面?

oauth - 我如何测试是否已获得管理员同意

android - Gmail 登录在 android 中

google-apps-script - 使用 CC 从工作表单元格添加多个用户

java - 如何使用gmail smtp发送邮件Spring实现?

php - Zend 框架 : How to read email attachments (and save to disk)?

oauth - 访问和刷新 token 的生命周期

php - 使用 PHP 获取未读邮件数

php - IMAP 附件