2013-10-01 41 views
0

我想通過Message msg[] = folder.getMessages();獲取電子郵件列表。之後,我得到每條消息的詳細信息,與此同時,我得到一些消息的例外情況。如何擺脫'無法加載IMAP信封'消息傳遞異常?

這是一個消息,該消息產生錯誤協議跡 -

誤差的
A7 FETCH 2 (ENVELOPE INTERNALDATE RFC822.SIZE) 
* 2 FETCH (RFC822.SIZE 2567 INTERNALDATE "29-Apr-2011 13:49:01 +0000" ENVELOPE ("Fri, 29 Apr 2011 19:19:01 +0530" "I NEES YOUR ASSISANCE?????" (("Mr Leung Cheung" NIL "info" "milium.com.br")) (("Mr Leung Cheung" NIL "info" "milium.com.br")) ((NIL NIL "mr.leung_cheung" "live.hk"))() NIL NIL NIL "<[email protected]>")) 
A7 OK FETCH Completed 

堆棧跟蹤是 -

Failed to load IMAP envelope stacktrace: javax.mail.MessagingException: Failed to load IMAP envelope 
    at com.sun.mail.imap.IMAPMessage.loadEnvelope(IMAPMessage.java:1276) 
    at com.sun.mail.imap.IMAPMessage.getSentDate(IMAPMessage.java:377) 
    at com.my.main.model.TestMail.showAllMails(TestMail.java:95) 
    at com.my.main.model.TestMail.main(TestMail.java:45) 

我使用JavaMail-1.5。

我該如何解決這個錯誤,是否有任何方法或設置來解決它,並獲取消息的細節而不跳過該消息?

感謝,

尼拉姆夏爾馬

回答

1

您的服務器壞了。請將此錯誤報告給服務器供應商。你使用什麼服務器?

在響應中,消息的「收件人」值必須符合該語法與規範中定義:「)(」

env-to  = "(" 1*address ")"/nil 
address  = "(" addr-name SP addr-adl SP addr-mailbox SP addr-host ")" 

相反,服務器返回。如果沒有To標頭,它應該返回「NIL」。

您可以使用JavaMail FAQ中描述的技術解決服務器錯誤。

+0

謝謝比爾,我正在使用IMAP服務器獲取Yahoo帳戶的消息。使用http://www.oracle.com/technetwork/java/javamail/faq/index.html#imapserverbug中提供的選項來解決獲取消息內容的問題。但我怎麼能得到一個消息,拋出「無法加載IMAP信封」使用SearchTerm提到 - http://stackoverflow.com/questions/18891509/how-to-get-message-from-messageidterm-for-yahoo-imap -profile這可能通過MessageID獲取該消息嗎?還有其他方法通過MessageID獲取此類消息? –

+0

而不是使用MessageIDTerm,使用HeaderTerm並檢查消息ID標頭。 –

+0

再次感謝,但我無法通過SearchTerm獲取消息searchTerm = new HeaderTerm(「Message-ID」,strMessageID); Message [] foundMessages = folder.search(searchTerm);儘管我的消息包含名爲「Message-ID」的標題。該搜索返回零消息。我正在爲Yahoo IMAP服務器工作。如何獲取消息? –