2013-05-29 26 views
0

我目前正在編寫一個應用程序,該應用程序應掃描用戶的郵件以獲取特定附件並從電子郵件中提取它們。谷歌應用程序引擎中缺少Javamail附件

我使用Javamail連接到郵箱,檢索郵件並解析郵件內容。 當我用一個附件檢索郵件時,Javamail爲我提供了一個包含3個正文部分的MultiPart對象:純文本電子郵件消息,html電子郵件消息和附件。但是,如果我在Google App Engine環境中運行相同的代碼段來檢索相同的emailmessage,那麼我只能得到2個正文部分:純文本電子郵件消息和html電子郵件消息。附件丟失。不過,附件內容在原始輸入流中可用。

這是代碼,我用它來檢索和部分解析的消息:

Message[] messages = emailFolder.getMessages(); 
for(Message message : messages) { 
    MimeMessage msg = new MimeMessage(emailSession, message.getInputStream()); 
    if(msg.getContent() instanceof Multipart) { 
     Multipart multipart = (Multipart) msg.getContent(); 
     for(int i = 0; i < multipart.getCount(); i++) { 
      BodyPart bodyPart = multipart.getBodyPart(i); 
      System.out.println("ContentType: " + bodyPart.getContentType()); 
     } 
    } 
} 

在這裏發生了什麼任何想法? 在此先感謝:-)

回答

0

聽起來像是Google App Engine中的錯誤。

您正在閱讀同一電子郵件服務器發送的同一封電子郵件,對嗎?

由於(潛在的)病毒問題,可能是附件被刪除/隱藏?

如果打開JavaMail會話調試,調試輸出會顯示什麼內容?

+0

調試輸出在兩種情況下都完全相同。客戶端向服務器進行身份驗證並檢索消息。它顯示帶有Base64編碼附件的原始消息。 在Google App Engine環境中,Javamail如何表現如此不同? – User2431975

+0

您是否將整條消息下載到客戶端,或者您是否使用IMAP在需要時下載附件?您是否正在使用getInputStream方法閱讀附件?你確定你沒有得到任何例外嗎?您是否使用Google提供的JavaMail實施? –

+0

我正在使用POP3下載整個郵件。沒有例外,沒有附件。 Base64編碼的附件存在於從POP3服務器接收的原始InputStream中,但不在解析的BodyPart對象中。 Google是否提供了JavaMail的不同實現,從javax.mail中的類提供appart? – User2431975