2011-09-06 34 views
3

我正在尋找獲取頂級X最近活動的Gmail線程列表的最佳方式。Gmail IMAP,爲X最近活動的Gmail線程尋找最佳方法

背景:

我使用Java訪問IMAP with OAuth在谷歌Apps for Education網域。 A Gmail Atom inbox feed可用,它可以列出包含未讀消息的最後20個線程。訪問此Feed似乎比我使用OAuth/IMAP設法制作的任何內容都快得多。

使用IMAP方法優於Gmail Atom收件箱供稿的優勢在於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

其實不是一個答案,而是一個相關的查詢。


馬克,按您的API請求,我張貼評論作爲一個答案(http://code.google.com/p/java-gmail-imap/wiki/DisplayingGmailThreadBasedView

請問您的lib支持3模式的OAuth,我試圖尋找XoauthAuthenticator的來源回購並找不到它。

感謝


agallego嗨,

我用java-gmail-imap與XOAUTH。在JavaMail中沒有任何明確的要求使用XOAUTH進行任何更改。

如果您查看XOAUTH項目(google-mail-xoauth-toolsgoogle-mail-xoauth-tool-java-two-legged),您會看到您可以創建可用於對Gmail進行身份驗證的SASL提供程序。見例如XoauthAuthenticator.java

我希望這有助於

馬克