【发布时间】:2012-04-24 17:02:58
【问题描述】:
在 Java 项目中,我可以接收来自 gmail 服务器的邮件。但我想收到身体的包裹部分。在这个代码示例中,我最后一个 message(messages.length - 1) 是多部分/混合的。
调试在 if 块上传递,但它落入 catch 块并给了我这个消息:
线程“main”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()));
}
}
}
}
编辑
我解决了使用 mail.jar、additional.jar 和 activation.jar 的问题,它们仅用于 Java 项目。
(我之前为我的 Android 项目下载了这些 jars。这是问题的根源。)
【问题讨论】:
标签: java exception jakarta-mail multipart