javax.activation.UnsupportedDataTypeException: no object DCH for MIME type text/calendar;method=REQUEST(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;方法=请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Javax.activation.UnsupportedDataTypeException:没有MIME类型文本/日历的对象Dch;方法=请求
基础教程推荐
- 在螺旋中写一个字符串 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01