[java] HTML 이메일을 어떻게 보내나요?

JMS를 사용하여 웹 애플리케이션에서 이메일을 성공적으로 보냈지 만 결과는 일반 텍스트로만 표시됩니다. 콘텐츠가 html을 표시 할 수 있기를 바랍니다. 어떻게하나요? 대략 내가 가진 것입니다.

Message msg = new MimeMessage(mailSession);
try{
    msg.setSubject("Test Notification");
    msg.setRecipient(Message.RecipientType.TO, new InternetAddress(sentTo, false));
    String message = "<div style=\"color:red;\">BRIDGEYE</div>";
    msg.setContent(message, "text/html; charset=utf-8");
    msg.setSentDate(new Date());
    Transport.send(msg);
}catch(MessagingException me){
    logger.log(Level.SEVERE, "sendEmailNotification: {0}", me.getMessage());
}



답변

Javadoc에 따라 MimeMessage#setText()는 기본 MIME 유형을으로 설정 text/plain하지만 text/html. 대신 사용하십시오 MimeMessage#setContent().

message.setContent(someHtmlMessage, "text/html; charset=utf-8");

자세한 내용은 다음을 참조하십시오.


답변

콘텐츠 유형을 설정합니다. 이 방법을 보세요 .

message.setContent("<h1>Hello</h1>", "text/html");


답변

Google 앱 엔진 / 자바를 사용하는 경우 다음을 사용하세요.

MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(SENDER_EMAIL_ADDRESS, "Admin"));
msg.addRecipient(Message.RecipientType.TO,
                 new InternetAddress(toAddress, "user");

msg.setSubject(subject,"UTF-8");

Multipart mp = new MimeMultipart();
MimeBodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent(message, "text/html");
mp.addBodyPart(htmlPart);
msg.setContent(mp);
Transport.send(msg);


답변

JavaMail 버전 1.4부터 setText하위 유형을 허용하는 메소드 의 과부하가 있습니다.

// Passing null for second argument in order for the method to determine
// the actual charset on-the fly.
// If you know the charset, pass it. "utf-8" should be fine
msg.setText( message, null, "html" );


답변

당신은 전화해야

msg.saveChanges();

콘텐츠 유형 설정 후.


답변

http://commons.apache.org/email/ 을 살펴보십시오 . 그들은 아마도 당신이 필요한 것을 정확히 수행하는 HtmlEmail 클래스를 가지고 있습니다.


답변

Google (gmail) 계정을 사용하여 이메일을 보내기위한 완전하고 매우 간단한 Java 클래스는 여기에서 찾을 수 있습니다.
Java 애플리케이션을 사용하여 이메일 메시지 보내기

다음 속성을 사용합니다.

Properties props = new Properties();
  props.put("mail.smtp.auth", "true");
  props.put("mail.smtp.starttls.enable", "true");
  props.put("mail.smtp.host", "smtp.gmail.com");
  props.put("mail.smtp.port", "587");