我正在尋找獲取頂級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 Extensions和Gmail 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個不同的消息線程被識別出來爲止?