java mail 發(fā)送郵件 no object DCH for MIME type mu...
在本機(jī)開發(fā)時(shí),郵件沒問題,一般也不應(yīng)該有什么問題,commons_email 和javax.mail搭配很久,低級(jí)問題該差不多沒了,偏偏上傳到服務(wù)器上,不行
javax.activation.UnsupportedDataTypeException: no object DCH for MIME type multipart/mixed
以前一般都是HTMLMail,這次有附件,因此是MultiPartMail,結(jié)果問題就出在這了,去掉附件都不行。
原因其實(shí)也能估計(jì)個(gè)大概,再加上異常的信息,一定又是MIME的問題,與web application里WEB-INF/web.xml里沒有指定application holder一樣的道理,可是在MultiPartMail里如何指定呢
放狗
查出來要在本地設(shè)置mailcap,無效,再說了,本地也沒設(shè)置,不應(yīng)該是這個(gè)問題。
再查,一般認(rèn)為是javax.activation和jdk6的問題,可是我兩邊都一樣的版本,不是
可是這個(gè)東西是在哪指定的呢,查jar包里的META-INF,發(fā)現(xiàn)activation有mailcap.default, mail.jar有mailcap,而本地沒有activation也運(yùn)行正常,應(yīng)該是打包的問題。
看 build.xml,發(fā)現(xiàn)為了避免以前的未知問題,在unjar所有jar并且打包時(shí),剔除了META-INF,記得是為了避免index.list的沖突問題,也是以前ant的bug
應(yīng)該就是這個(gè)問題,重新打包,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);
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。