[简略记录]android中使用javamail的问题

在android中使用标准的javamail类库时,会报NoClassDefFoundError之类的错误,根源主要是android is not java,标准javamail中使用的部分sun.*等类库在android运行环境中是没有的。

网友们提供的解决办法就是使用[url]https://code.google.com/p/javamail-android[/url]这个项目,它替换了标准实现里面依赖的一些类库。当然,你也还可以参考一下[url]https://github.com/ruiaraujo/javamail_android[/url]这个项目。

不过我比较有空,又爱折腾,最后是自己到kenai.com找了javamail 1.5的源码,各种折腾一番之后重新打包一番再使用。

注意啦,使用的过程,如果有multipart messages的问题,还需要自己做些兼容(把它写在static方法里面运行一次就好了):

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("image/gif;; x-java-content-handler=com.sun.mail.handlers.image_gif");
mc.addMailcap("image/jpeg;; x-java-content-handler=com.sun.mail.handlers.image_jpeg");
mc.addMailcap("image/png;; x-java-content-handler=com.sun.mail.handlers.image_png");
CommandMap.setDefaultCommandMap(mc);


完毕。

发布在:[url]http://auzll.iteye.com[/url]

你可能感兴趣的:(android,javamail)