我试图用HTML格式发送电子邮件使用JavaMail,但它似乎总是只显示为Outlook中的文本电子邮件。如何将HTML电子邮件发送到Java的Outlook
这里是我的代码:
try
{
Properties props = System.getProperties();
props.put("mail.smtp.host", mailserver);
props.put("mail.smtp.from", fromEmail);
props.put("mail.smtp.auth", authentication);
props.put("mail.smtp.port", port);
Session session = Session.getDefaultInstance(props, null);
// -- Create a new message --
MimeMessage message = new MimeMessage(session);
// -- Set the FROM and TO fields --
message.setFrom(new InternetAddress(fromEmail, displayName));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to, false));
MimeMultipart content = new MimeMultipart();
MimeBodyPart text = new MimeBodyPart();
MimeBodyPart html = new MimeBodyPart();
text.setText(textBody);
text.setHeader("MIME-Version" , "1.0");
text.setHeader("Content-Type" , text.getContentType());
html.setContent(htmlBody, "text/html");
html.setHeader("MIME-Version" , "1.0");
html.setHeader("Content-Type" , html.getContentType());
content.addBodyPart(text);
content.addBodyPart(html);
message.setContent(content);
message.setHeader("MIME-Version" , "1.0");
message.setHeader("Content-Type" , content.getContentType());
message.setHeader("X-Mailer", "My own custom mailer");
// -- Set the subject --
message.setSubject(subject);
// -- Set some other header information --
message.setSentDate(new Date());
// INFO: only SMTP protocol is supported for now...
Transport transport = session.getTransport("smtp");
transport.connect(mailserver, username, password);
message.saveChanges();
// -- Send the message --
transport.sendMessage(message, message.getAllRecipients());
transport.close();
return true;
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
throw e;
}
任何想法,为什么电子邮件的HTML版本将不会在Outlook中显示?
我用一个新想法更新了我的答案。 – erickson 2008-11-27 16:55:40
@erickson:对你的回答满意是从我;) – 2010-05-18 15:06:28