没有MIME类型文本

没有MIME类型文本

本文介绍了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;方法=请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-20 18:10