2013-04-17 29 views
0

我有一個郵件閱讀器類,它設置FetchProfile並稍後執行msg.getContent。 我想在一次通話中同時閱讀標題和內容,基本上可以在一次通話中下載完整的郵件。因爲我觀察到msg.getcontent會調用服務器來獲取正文/內容,如果我們可以在一次調用中下載完整的郵件,則可以保存對服務器的調用。使用java在一次調用中同時讀取標題和正文

這可能嗎?

的代碼與此類似

 inbox.open(Folder.READ_ONLY); 

    /* Get the messages which is unread in the Inbox */ 
    Message messages[] = inbox.search(new FlagTerm(
      new Flags(Flag.SEEN), false)); 

    /* Use a suitable FetchProfile */ 
    FetchProfile fp = new FetchProfile(); 
    fp.add(FetchProfile.Item.ENVELOPE); 
    fp.add(FetchProfile.Item.CONTENT_INFO); 
    inbox.fetch(messages, fp); 

    for (int i = 0; i < messages.length; i++) { 
     System.out.println("MESSAGE #" + (i + 1) + ":"); 
     Message message = messages[i]; 

     **String content = message.getContent();** 
     System.out.println("Content : " + content); 
    } 

得到任何幫助。

感謝和問候 Raaghu.K

回答

1

如果你想在一個呼叫整個消息,並且不需要使用任何的IMAP協議的特點,你有兩個選擇:

  1. 使用POP3代替IMAP。
  2. 使用Message.writeTo方法將消息內容寫入文件或字節數組,並從那裏處理它,例如使用帶有InputStream的MimeMessage構造函數。 (這使整個郵件的本地副本。)
+0

是的。這種方法可行,但實施起來很不安全,因爲它可以下載完整的郵件(附件),並可能導致內存不足。 – Raaghu

+0

是的,但這就是你所要求的,「在一次通話中下載完整的郵件」。沒有辦法在一次調用中下載消息頭和消息的主體,因爲直到你檢查消息的結構,你才知道消息的主體在哪裏。 –

+0

對。你的方法和建議可以回答我的問題,我剛剛解釋了危險/退步 – Raaghu

相關問題