在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]

更多相关文章

  1. [Android]修改Android Studio项目的运行版本
  2. Android必备:Android项目的目录结构
  3. Android封装jar包,把当前项目设置成module,封装手机振动jar包给uni
  4. Android开源项目解析:PullToRefresh
  5. Android网络收音机项目
  6. 3.4 管理项目 - 创建Android库
  7. Untity3D项目调用Android 图片错乱问题

随机推荐

  1. GPS在Android的使用经验
  2. Android中的分辨率小结
  3. xxx is not translated in yyy, zzz 的解
  4. Android通过路径获取URI(全版本)
  5. 【android】存储数组数据到SharedPrefere
  6. Android(安卓)使用HTTPClient调用Web请求
  7. Andoid自动判断输入是电话,网址或者Email
  8. Android(安卓)Aidl实现进程间通信
  9. 关于Android应用程序内存泄漏 你需要知道
  10. ListViewAnimations 源码浅析