javax.activation.UnsupportedDataTypeException: нет объекта DCH для типа MIME текст / календарь; метод = REQUEST - PullRequest
1 голос
/ 27 февраля 2020

Я пытаюсь отправить приглашение на встречу в календаре, используя java почту. Но сталкиваюсь с ошибкой ниже. Я искал переполнение стека. Все ответы с соответствующей ошибкой на почту.

без объекта DCH для текста / календаря MIME; метод = REQUEST

код:

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) 

1 Ответ

0 голосов
/ 27 февраля 2020

Проблема в том, что нет настроенного класса, который знает, как преобразовать объект calendarContent (независимо от того, что это) в поток байтов в формате типа MIME text / calendar. Если вы можете сделать это преобразование самостоятельно, преобразовав объект в байтовый массив или строку, то JavaMail сможет обработать его без дальнейшей настройки. Если вы хотите настроить систему так, чтобы она могла выполнять это преобразование для вас, вам необходимо настроить платформу активации JavaBeans и предоставить класс, который выполняет преобразование. Поскольку вы делаете это только сами и не пытаетесь упростить задачу для других, я описал самый простой подход - сначала преобразовать объект calendarContent в байтовый массив / поток или строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...