java mail 发送邮件 no object DCH for MIME type multipart/mixed 之正解

  在本机开发时,邮件没问题,一般也不应该有什么问题,commons_email 和javax.mail搭配很久,低级问题该差不多没了,偏偏上传到服务器上,不行

    javax.activation.UnsupportedDataTypeException: no object DCH for MIME type multipart/mixed 

    以前一般都是HTMLMail,这次有附件,因此是MultiPartMail,结果问题就出在这了,去掉附件都不行。

    原因其实也能估计个大概,再加上异常的信息,一定又是MIME的问题,与web application里WEB-INF/web.xml里没有指定application holder一样的道理,可是在MultiPartMail里如何指定呢

 

放狗

 

查出来要在本地设置mailcap,无效,再说了,本地也没设置,不应该是这个问题。

再查,一般认为是javax.activation和jdk6的问题,可是我两边都一样的版本,不是

可是这个东西是在哪指定的呢,查jar包里的META-INF,发现activation有mailcap.default, mail.jar有mailcap,而本地没有activation也运行正常,应该是打包的问题。

看 build.xml,发现为了避免以前的未知问题,在unjar所有jar并且打包时,剔除了META-INF,记得是为了避免index.list的冲突问题,也是以前ant的bug

应该就是这个问题,重新打包,OK

另外,也可以在mail.send之前,手工加这么一段

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

文章出处:http://yyri.blog.sohu.com/134367998.html

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值