在 Java 项目中,我可以接收来自 gmail 服务器的邮件。但我想收到身体的包裹部分。在这个代码示例中,我的最后一个message(messages.length - 1)
是多部分/混合的。
调试在块上传递,if
但它落入 catch 块并给了我这个消息:
线程“主”java.lang.ClassCastException 中的异常:com.sun.mail.imap.IMAPInputStream 无法转换为 javax.mail.Multipart
我该如何处理这个问题?
Message[] messages = folder.getMessages();
ArrayList<String> attachments = new ArrayList<String>();
for (int i = messages.length - 1; i >= 0; i--) {
Part p = messages[i];
if (messages[i].isMimeType("multipart/*"))
{
***Multipart multipart = (Multipart) messages[i].getContent();***
for (int j = 0, m = multipart.getCount(); j < m; j++) {
Part part = multipart.getBodyPart(j);
String disposition = part.getDisposition();
//
if (disposition != null
&& (disposition.equals("ATTACHMENT")))
{
System.out.println(part.getFileName());
attachments.add(saveFile(MimeUtility.decodeText(part.getFileName()), part.getInputStream()));
}
}
}
}
编辑
我解决了使用仅用于Java Project的 mail.jar、additional.jar 和 activation.jar 的问题。
(我之前为我的 Android 项目下载了这些 jar。这是问题的根源。)