天天看點

Failed to load IMAP envelope解決辦法

最近在開發一個發送、接收郵件的功能,發送郵件采用的是阿裡雲的郵件服務,用于推送公司的一些業務郵件,郵件回複位址是騰訊企業郵箱,在收件時采用的是imap協定,開發時可以正常的擷取收件箱内的郵件,但是測試時卻報了以下錯誤

javax.mail.MessagingException: Failed to load IMAP envelope
at com.sun.mail.imap.IMAPMessage.loadEnvelope(IMAPMessage.java:)
at com.sun.mail.imap.IMAPMessage.getSubject(IMAPMessage.java:)
           

經過debug發現是在com.sun.mail.imap.IMAPMessage的1240行的判斷未通過,導緻envelope為null,進而抛出錯誤

if (r[i] == null ||
    !(r[i] instanceof FetchResponse) ||
    ((FetchResponse)r[i]).getNumber() != seqnum)
    continue;
           

在網上也查找了很多文章,對這個問題并沒有什麼明确的分析,本人從結果上看,通過smtp發送(程式)的郵件不能用imap接收,限于時間問題,未再深入研究出現原因,隻是将收件方式替換為了pop3,目前測試是ok的,未再出現異常情況。

需要注意的是服務郵件内的用戶端設定可能需要進行響應的調整,如騰訊企業郵箱:設定-用戶端設定-收取選項-收取“30”天的郵件,需要調整為收取所有郵件。

繼續閱讀