JavaMail - HTML에 이미지도 같이 보내기
HTML로 <img> 태그 써서 외부에 있는 이미 파일 링크거는거야.. 별거 아니고 그냥 html만 문자열로 잘 그리면 되는거죠. 그런데, 그런 절대경로로 이미지 참조하는거 말고, 이미지 파일을 동봉해서 상대경로로 참조하게 하는 방법입니다.
http://www.rgagnon.com/javadetails/java-0504.html
위에 잘 나와있습니다. 이번에도 전 메소드 하나만 샥~ 바꾸면 끝..
String contents, String to) {
MimeMessage message = new MimeMessage(session);
try {
message.setSubject(title);
message.setRecipient(RecipientType.TO, new InternetAddress(to));
//
// This HTML mail have to 2 part, the BODY and the embedded image
//
MimeMultipart multipart = new MimeMultipart("related");
// first part (the html)
BodyPart messageBodyPart = new MimeBodyPart();
String htmlText = "<H1>Hello</H1><img src=\"cid:image\">";
messageBodyPart.setContent(htmlText, "text/html");
// add it
multipart.addBodyPart(messageBodyPart);
// second part (the image)
messageBodyPart = new MimeBodyPart();
DataSource fds = new FileDataSource("C:\\images\\1.jpg");
messageBodyPart.setDataHandler(new DataHandler(fds));
messageBodyPart.setHeader("Content-ID","<image>");
// add it
multipart.addBodyPart(messageBodyPart);
// put everything together
message.setContent(multipart);
} catch (MessagingException e) {
throw new RuntimeException(e);
}
return message;
}
message에는 Multipart를 붙이고 Multipart에는 여러 개의 BodyPart를 붙였네요. 흠.. 한 바디에는 HTML을 붙이고, 다른 한 바디에는 그 위에서 참조할 이미지를 붙였습니다. 저런식으로 보내는 거였군요. 이미지는 Content-ID로 참조를 했고, MimeBodyPart의 헤더에 Content-ID를 설정했군요..