问题
我已使用JMS在我的Web应用程序中成功发送了电子邮件,但结果仅以纯文本显示。我希望内容能够显示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());
}
#1 热门回答(235 赞)
根据Javadoc,MimeMessage#setText()
设置默认的mime类型text/plain
,而你需要text/html
。而是使用MimeMessage#setContent()
。
message.setContent(someHtmlMessage, "text/html; charset=utf-8");
有关其他详情,请参阅:
- GMail媒体查询
- GMail CSS设计
- 邮件客户端的CSS支持
#2 热门回答(18 赞)
设置内容类型。看看这个method。
message.setContent("<h1>Hello</h1>", "text/html");
#3 热门回答(11 赞)
如果你使用的是Google应用引擎/ Java,请使用以下内容...
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);