2017-10-22 5 views
0

WebアプリケーションにJavaMailAPIを統合しています。 HTMLの本文に画像を埋め込む必要があります。画像パスをハードコードするのではなく、src/main/resourceディレクトリから画像を取得しようとしています。Java Mail API - URLからデータソースを取得するときにエラーが発生する

下記のコードをお試しください。

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) 
+0

サーブレットを使用していますか? – Ravi

+0

これを見てください:https://stackoverflow.com/questions/6005983/sending-email-with-attachmentthroughthrough-gmailsender –

+0

はい@WebServletを使用しています – Karthikeyan

答えて

0

は、この要件に私のために働いています。

ClassLoader classLoader = getClass().getClassLoader(); 
FileDataSource fds = new FileDataSource(new 
File(classLoader.getResource("email/logo_email.png").getFile())); 
関連する問題