无法将IMAPInputStream转换为Multipart

编程入门 行业动态 更新时间:2024-10-18 16:45:50
本文介绍了无法将IMAPInputStream转换为Multipart的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

在Java项目中,我可以从gmail服务器接收邮件。但是我想收到身体的包裹部分。在这个代码示例中,我的最后一个消息(messages.length - 1)是multipart / mixed。调试是通过if块,但它落入catch块,并给我这个消息:线程main中的异常java.lang.ClassCastException:com.sun.mail.imap.IMAPInputStream不能转换为javax.mail.Multipart

In Java project, I can receive mails from gmail server. But I want to receive the package part of body. And in this code sample my last message(messages.length - 1) is multipart/mixed. Debug is pass on the if block but it fall into the catch block and gave me this message : Exception in thread "main" java.lang.ClassCastException: com.sun.mail.imap.IMAPInputStream cannot be cast to 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())); } } } }

EDIT

我使用仅使用 Java Project

I fixed problem with using mail.jar, additional.jar and activation.jar which are using for only Java Project.

(我是为我的Android项目下载这些jar,这是问题的根源。)

(I was download these jars before for my Android Project. That was the source of problem.)

推荐答案

当我使用Android JavaMail阅读邮件附件时遇到类似的问题。我已经通过添加以下代码行来修复此错误。 MailCap有问题,javamail无法找到多部分/混合部分的处理程序,因此需要添加该位。这解决了我的问题。希望它帮助某人在那里。

I ran into similar problem while I was to read message attachments using Android JavaMail. I have fixed this error by adding following lines of code. There is something wrong with MailCap, javamail can not find a handler for the multipart/mixed part, so this bit needs to be added. This resolved my problem. Hope it helps someone out there.

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);

干杯!

更多推荐

无法将IMAPInputStream转换为Multipart

本文发布于:2023-11-10 02:53:30,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1574145.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:转换为   IMAPInputStream   Multipart

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!