javax.activation.UnsupportedDataTypeException: нет объекта DCH для изображения типа MIME/png при попытке отправить электронное письмо

Я обновил свой проект с Java 8 до 14. Я также обновил кучу зависимостей в своем проекте pom.xml. Теперь у меня проблема всякий раз, когда я пытаюсь отправить электронное письмо через приложение. Я пробовал много разных решений, которые нашел в Интернете, но ни одно из них не работает для меня. Вот журнал ошибок:

javax.mail.MessagingException: IOException while sending message;
  nested exception is:
    javax.activation.UnsupportedDataTypeException: no object DCH for MIME type image/png
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1365)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:88)
    at 
    java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
    at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: javax.activation.UnsupportedDataTypeException: no object DCH for MIME type image/png
    at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:885)
    at javax.activation.DataHandler.writeTo(DataHandler.java:316)
    at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1687)
    at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:991)
    at javax.mail.internet.MimeMultipart.writeTo(MimeMultipart.java:561)
    at com.sun.mail.handlers.multipart_mixed.writeTo(multipart_mixed.java:84)
    at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:883)
    at javax.activation.DataHandler.writeTo(DataHandler.java:316)
    at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1687)
    at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1906)
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1315)
    ... 16 more
2020-09-02 17:00:03 INFO  EmailDirectSignOneTimeLogin:79 - direct sign url: http://localhost:3000/direct_sign/czDSIg3Fms
FINISHED JOB

Любая помощь будет оценена по достоинству. Если вам нужна дополнительная информация, пожалуйста, прокомментируйте вопрос.


person maahd    schedule 02.09.2020    source источник


Ответы (1)


Для этого может потребоваться дополнительная информация о том, что вы пытаетесь сделать, но я случайно нашел этот вопрос, работая над той же проблемой, а также нашел этот вопрос и получил приведенный ниже код, который работает в Java 11:

            part = new MimeBodyPart();
            ByteArrayDataSource source = new ByteArrayDataSource(logoBytes, "image/png");
            DataHandler handler = new DataHandler(source);
            part.setDataHandler(handler);
            part.setHeader("Content-ID", "<Logo>");
            multipart.addBodyPart(part);
person D. J. Lynch    schedule 03.09.2020