带附件的Java邮件:javax.mail.Multipart上的ClassCastException [英] Java mail with attachment: ClassCastException on javax.mail.Multipart
问题描述
我使用以下代码从邮件中下载附件,但它在Multipart声明中给出 ClassCastException
:
I use the following code to download the attachment from the mail but it gives the ClassCastException
on the Multipart declaration:
线程main中的异常java.lang.ClassCastException:com.sun.mail.imap.IMAPInputStream无法在ReadAttachment.main(ReadAttachment)中强制转换为javax.mail.Multipart
.java:52)
Exception in thread "main" java.lang.ClassCastException: com.sun.mail.imap.IMAPInputStream cannot be cast to javax.mail.Multipart at ReadAttachment.main(ReadAttachment.java:52)
如何处理IMAPInputStream?
How do I handle IMAPInputStream?
Message messages[] = inbox.getMessages();
for (int j = 0; j < messages.length; j++) {
String mailType = messages[j].getContentType();
System.out.println("-- Message " + (j + 1) + " --");
System.out.println("SentDate : " + messages[j].getSentDate());
System.out.println("From : " + messages[j].getFrom()[0]);
System.out.println("Subject : " + messages[j].getSubject());
System.out.println("Type :" + messages[j].getContentType());
System.out.println("Attachment :" + messages[j].getFileName());
Multipart mp = (Multipart) messages[j].getContent();
..
System.out.println();
}
推荐答案
我遇到了同样的问题JavaMail 1.5.1和OSGi。使用msg.getContent()时,从OSGi包调用时总是返回一个InputStream,而当从一个简单的Java测试程序调用它时它是完美的。
I had the same problem with the JavaMail 1.5.1 and OSGi. Using msg.getContent() always returned an InputStream when called from an OSGi bundle while it works perfectly when called from a simple Java test program.
设置默认的CommandMap didn'为我工作,但我在这里找到了解决方案:
Setting the default CommandMap didn't work for me, but I found a solution here:
https://www.java.net/node/705585
ClassLoader tcl = Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(javax.mail.Session.class.getClassLoader());
// now call JavaMail API
// ...
} finally {
Thread.currentThread().setContextClassLoader(tcl);
}
这篇关于带附件的Java邮件:javax.mail.Multipart上的ClassCastException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!