我有一個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?
你是否進入'getInputStream()'調用來查看它做了什麼? – jtahlborn 2014-09-12 16:34:37
不,我沒有。我會嘗試;謝謝! – CullenJ 2014-09-12 16:50:09
我能夠通過切換到POP3而不是IMAP來讓我的代碼正常工作。任何人都可以解釋爲什麼這不適用於IMAP? – CullenJ 2014-09-12 17:09:32