Mer*_*rve 3 java exception multipart jakarta-mail
在Java项目中,我可以从gmail服务器接收邮件.但我想收到身体的包裹部分.在这个代码示例中,我的最后一个message(messages.length - 1)是multipart/mixed.
调试是在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()));
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我修复了使用mail.jar,additional.jar和activation.jar的问题,它们只用于Java Project.
(我之前为我的Android项目下载了这些罐子.这就是问题的根源.)
jag*_*han 12
我在使用Android JavaMail阅读邮件附件时遇到了类似的问题.我通过添加以下代码行修复了此错误.MailCap有问题,javamail找不到multipart/mixed部分的处理程序,所以需要添加这个位.这解决了我的问题.希望它可以帮助那里的人.
MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap();
mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");
mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");
mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");
mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");
mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");
CommandMap.setDefaultCommandMap(mc);
Run Code Online (Sandbox Code Playgroud)
干杯!
| 归档时间: |
|
| 查看次数: |
3815 次 |
| 最近记录: |