Java Mail API - источник данных из URL - ошибка получения
Я интегрирую JavaMailAPI в мое веб-приложение. Я должен встраивать изображения в тело HTML. Я пытаюсь получить изображения из каталога src/main/resource вместо жесткого кода пути к изображению.
Пожалуйста, найдите ниже код, который я пытаюсь.
ClassLoader classLoader = getClass().getClassLoader();
URL url = classLoader.getResource("email/logo_email.png");
MimeMultipart multipart = new MimeMultipart("related");
BodyPart messageBodyPart = new MimeBodyPart();
String htmlText = "<img src=\"cid:image\">" + "<H1>Dear Customer</H1>";
messageBodyPart.setContent(htmlText, "text/html");
multipart.addBodyPart(messageBodyPart);
try {
messageBodyPart = new MimeBodyPart();
DataSource fds = new URLDataSource(url);
messageBodyPart.setDataHandler(new DataHandler(fds));
messageBodyPart.setHeader("Content-ID","<image>");
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
Transport.send(message);
System.out.println("Done");
} catch (Exception e) {
e.printStackTrace();
}
Получаю приведенную ниже ошибку:
java.lang.NullPointerException
at javax.activation.URLDataSource.getContentType(URLDataSource.java:78)
at javax.activation.DataHandler.getContentType(DataHandler.java:205)
at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1245)
at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1001)
at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:333)
at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1255)
at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:2012)
at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:1980)
at javax.mail.Transport.send(Transport.java:97)
1 ответ
Решение
Ниже код работает для меня, чтобы это требование.
ClassLoader classLoader = getClass().getClassLoader();
FileDataSource fds = new FileDataSource(new
File(classLoader.getResource("email/logo_email.png").getFile()));