問題描述
使用 JavaMail 加速電子郵件檢索 (Speed up email retrieval with JavaMail)
目前,我的代碼使用 IMAP(imap)和 JavaMail 訪問我的 Gmail 收件箱,目的是閱讀從最新到最舊發送給我的電子郵件,識別哪些電子郵件具有 .zip 或 .xap 格式的附件。如果找到,將顯示電子郵件的主題並詢問我是否要下載附件。
如果我單擊“否”,它會繼續搜索。如果我點擊是,它會調用 createFolder 方法來創建一個目錄,將附件保存在那裡,然後提取它。
問題: 我收件箱中最近的電子郵件有一個.zip 文件,因此可以很快找到,但如果我單擊“否”,則需要 20 秒以上才能找到包含 zip/xap 的下一封電子郵件,原因有兩個:(1) 最近有 20 多封電子郵件 (2) 最近有 2 封電子郵件包含附件但不是 zip/xap。
我猜這是由於在識別附件格式或其他一些冗餘代碼/方法之前為隔離附件而發生的遞歸?我已閱讀 此處 和 這裡 獲取配置文件可以提供幫助,而不是不必要地聯繫服務器。
我希望大大減少延遲。獲取/信封是要走的路嗎?我的代碼是一團亂麻,還是您可以分享一個示例解決方案?謝謝!
參考解法
方法 1:
A FetchProfile allows you to prefetch some of the message information "in bulk". This prefetched information is then used later when you access the corresponding fields of the Message objects. You probably want to use FetchProfile.Item.CONTENT_INFO and FetchProfile.Item.ENVELOPE. Other than that, your code looks fine.
(by Casey B.、Bill Shannon)