【问题标题】:Gmail IMAP, Searching for optimal method for X most recently active Gmail threadsGmail IMAP,为 X 个最近活跃的 Gmail 线程搜索最佳方法
【发布时间】:2011-11-11 10:16:53
【问题描述】:

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

背景:

我在 Google Apps for Education 域中使用 Java 访问 IMAP with OAuthGmail Atom inbox feed 可用,它可以列出最后 20 个包含未读消息的线程。访问此提要似乎比我使用 OAuth/IMAP 生成的任何内容都快得多。

与 Gmail Atom 收件箱提要相比,使用 IMAP 方法的优势在于使用 IMAP,我可以访问任意数量的邮件(不仅仅是 20 条)、查看已读邮件、获取线程大小、获取任何关联的谷歌标签、获取配额详细信息并检查标志。从本质上讲,这将为我的用户提供更多类似 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; 

有没有比遍历收件箱直到识别出 X 个不同的消息线程更好的方法?

【问题讨论】:

    标签: oauth gmail imap gmail-imap jakarta-mail


    【解决方案1】:

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


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

    您的 lib 是否支持 3 条腿 oauth,我尝试在 repo 的源中查找 XoauthAuthenticator 并找不到它。

    谢谢


    嗨,阿加莱戈,

    我将java-gmail-imap 与 XOAUTH 一起使用。 JavaMail 中没有明确要求任何更改才能使用 XOAUTH。

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

    希望对你有帮助,

    标记

    【讨论】:

      猜你喜欢
      • 2012-10-23
      • 2010-11-28
      • 1970-01-01
      • 2010-12-26
      • 2021-01-09
      • 2012-10-17
      • 1970-01-01
      • 1970-01-01
      • 2022-12-28
      相关资源
      最近更新 更多