我使用JavaMail在Android中接收电子邮件。Android Javamail接收电子邮件
问题是: Message.getContent()
总是返回SharedByteArrayInputStream
。 和
Bodypart.getContent()
总是返回BASE64DecoderStream
或QRDecoderStream
。
我读了JavaMail'FAQ,它说:
问:当读取一个多部分消息,为什么是的getContent方法返回一个IMAPInputStream (or SharedByteArrayInputStream)
而不是MimeMultipart object?
A的:这通常这是因为JavaBeans激活框架(JAF)无法找到mail.jar文件中包含的mailcap配置文件。 JAF使用线程的上下文类加载器来查找配置文件。如果上下文类加载器设置不正确,则可能会失败。大多数应用程序服务器应该正确设置上下文类加载器,但至少某些版本的Tomcat不能。一种解决方法是将mail.jar文件放在Tomcat的lib目录中,而不是将其包含在war文件中。另一个解决方法是添加代码如下所示您的应用程序的开头:
Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
但我不知道如何在Android的解决这个问题。有没有人可以帮助我?
太谢谢你了。我确实使用了错误的jar文件,它是oracle JavaMail。 – user2368561
@ user2368561 one upvote :) – sachin10