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");