2014-09-12 21 views
1

我有一個javax.mail應用程序,通過電子郵件解析並得到InputStream所有application/*附件:爲什麼JavaMail BodyPart.getInputStream()在使用IMAP時返回一個空流,但是在使用POP3時不會返回空流?

private DataInputStream getAttachmentStream(Message message) throws MessagingException, IOException { 
    if (message.isMimeType("multipart/*")) { 
     Multipart mp = (Multipart) message.getContent(); 

     for (int p = 0; p < mp.getCount(); p++) { 
      BodyPart part = mp.getBodyPart(p); 

      if (part.getContentType().toLowerCase().startsWith("application")) { 
       InputStream is = part.getInputStream(); 

       DataInputStream dis = new DataInputStream(is); 

       App.logger.info("Found attachment.""); 
       return dis; 
      } 
     } 
    } 

    App.logger.warn("No attachment found."); 
    return null; 
} 

我的問題是,即使是有附件的郵件時,所得DataInputStream是空的。我已經在調試器中通過了,part絕對是附件中正確的Message部分。

我切換了我的代碼的協議,檢查電子郵件地址使用POP3,而不是IMAP,這個代碼神奇地工作。任何人都可以解釋爲什麼此代碼適用於POP3而不適用於IMAP?

+0

你是否進入'getInputStream()'調用來查看它做了什麼? – jtahlborn 2014-09-12 16:34:37

+0

不,我沒有。我會嘗試;謝謝! – CullenJ 2014-09-12 16:50:09

+0

我能夠通過切換到POP3而不是IMAP來讓我的代碼正常工作。任何人都可以解釋爲什麼這不適用於IMAP? – CullenJ 2014-09-12 17:09:32

回答

相關問題