本文介紹了Javax.activation.UnsupportedDataTypeException:沒有MIME類型文本/日歷的對象Dch;方法=請求的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我正在嘗試使用Java郵件發送日歷會議邀請。但我面臨著下面的錯誤。我在堆棧溢出上進行了搜索。所有有相關錯誤的答案都是郵寄的。
MIME類型文本/日歷沒有對象DCH;方法=請求
編碼:
BodyPart calendarPart = new MimeBodyPart();
calendarPart.addHeader("Content-Class", "urn:content-classes:calendarmessage");
calendarPart.setContent(calendarContent, "text/calendar;method=REQUEST");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(calendarPart);
MimeMessage message = new MimeMessage(session);
message.addHeaderLine("method=REQUEST");
message.addHeaderLine("charset=UTF-8");
message.addHeaderLine("component=VEVENT");
message.setSubject(meetingSubject);
message.setContent(multipart);
Transport.send(message);
錯誤跟蹤:
Caused by: javax.activation.UnsupportedDataTypeException: no object DCH for MIME type text/calendar;method=REQUEST
at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:885)
at javax.activation.DataHandler.writeTo(DataHandler.java:316)
at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1485)
at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:865)
at javax.mail.internet.MimeMultipart.writeTo(MimeMultipart.java:462)
at com.sun.mail.handlers.multipart_mixed.writeTo(multipart_mixed.java:103)
at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:883)
at javax.activation.DataHandler.writeTo(DataHandler.java:316)
at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1485)
at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1773)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1121)
推薦答案
幾天前我遇到了同樣的問題,就在今天我找到了一個解決方案,百分之百解決了我的問題。
Java Mail依賴于一些配置文件將MIME類型映射到Java類(例如,將多部分/混合映射到javax.mail.interet.MimeMultipart)。這些配置文件是使用應用程序的ClassLoader加載的。如果ClassLoader不能正常工作(在我的例子中,由于依賴項沖突),將找不到這些配置文件。
只需將以下代碼添加到您的方法的乞討中:
final MimetypesFileTypeMap mimetypes = (MimetypesFileTypeMap) MimetypesFileTypeMap.getDefaultFileTypeMap();
mimetypes.addMimeTypes("text/calendar ics ICS");
final MailcapCommandMap mailcap = (MailcapCommandMap) MailcapCommandMap.getDefaultCommandMap();
mailcap.addMailcap("text/calendar;; x-java-content-handler=com.sun.mail.handlers.text_plain");
我希望現在還不算太晚,希望它能幫助你們所有人。
這篇關于Javax.activation.UnsupportedDataTypeException:沒有MIME類型文本/日歷的對象Dch;方法=請求的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,