如何发送HTML电子邮件?

Tha*_*ham 115 java email jakarta-mail

我已使用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());
}
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 258

根据Javadoc ,在您需要时MimeMessage#setText()设置默认的mime类型.而是改为使用.text/plaintext/htmlMimeMessage#setContent()

message.setContent(someHtmlMessage, "text/html; charset=utf-8");
Run Code Online (Sandbox Code Playgroud)

有关其他详情,请参阅:


Coo*_*ans 19

设置内容类型.看看这个方法.

message.setContent("<h1>Hello</h1>", "text/html");
Run Code Online (Sandbox Code Playgroud)


小智 13

如果您使用的是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);
Run Code Online (Sandbox Code Playgroud)


Ale*_*yak 6

从 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" );
Run Code Online (Sandbox Code Playgroud)


小智 5

你必须打电话

msg.saveChanges();
Run Code Online (Sandbox Code Playgroud)

设置内容类型后。