記錄一個奇怪的錯誤,javax.mail.MessagingException: Failed to load IMAP envelope(Android development)
阿新 • • 發佈:2019-02-17
前言
遇到問題,多溝通,冷靜分析,即能解決!錯誤截圖
上面兩個圖就是出現這個錯誤的log,我用的是JavaMail1.6.0正式版,使用IMAP收取公司郵箱郵件的時候出現的這個問題,可以看到錯誤均指向"MailParse"這個類裡面的88行,這個方法是獲取該郵件發件人郵箱地址資訊,我使用的是getFrom,當然後來我嘗試替換成getHeader("From")效果是一樣的。 我一頁收取的是20條資料,斷點除錯到第18封郵件時報的這個錯誤,奇怪的是,這個時候第18封郵件getHeader頭資訊裡面竟然沒有"From"的資訊,而且此時已經報了javax.mail.MessagingException: Failed to load IMAP envelope,當時的寫法是try-catch塊,捕捉到的錯誤就是javax.mail.MessagingException: Failed to load IMAP envelope
javax.mail.MessagingException: Failed to load IMAP envelope 資料查詢
上網搜尋了下,發現這個錯誤很多,但都是不了了之,很迷惑,但是我還是搜尋到了一點資訊 這篇部落格有明確的指向,可以看到Bill的回覆,翻譯成中文如下: “你的伺服器壞了 請將此錯誤報告給伺服器供應商。 你使用什麼伺服器?在響應中,訊息的“To”值必須符合規範中定義的此語法:
env-to =“(”1 * address“)”/ nil
address =“(”addr-name SP addr-adl SP addr-mailbox SP addr-host“)”
相反,伺服器已返回“()”。 如果沒有To頭,它應該返回“NIL”。
您可以使用JavaMail FAQ中描述的技術解決伺服器錯誤。”
20170823復現更新
今天下午又出現了這個錯誤,我發現就我用賬號有問題(我自己的企業郵箱),其他人的賬號均沒有問題,網易等賬號也沒有這個問題,而且在我除錯的時候,發現郵件數量明顯不對,web端明顯到4月份了,而我用Javamail客戶端收取的才到7月24號,後來我到web端查看了下,我發現我勾選了這個選項另外可以很合理的解釋了,為什麼Javamail報的錯誤資訊為javax.mail.MessagingException: Failed to load IMAP envelope,意思就是無法載入信封,因為你限制了這個時間,只能拉取最近30天的郵件,所以之後的郵件你是拉取不了,修改為“收取全部”後,問題解決,完美,開心!