我有一个javax.mail
通过电子邮件解析和获取应用程序InputStream
为所有application/*
附件:
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的?