JavaMail:当预期 HTML 时,MimeMessage 以纯文本形式发送?
JavaMail: MimeMessage sent as plain text when HTML is expected?
我的 Spring
REST Web 应用程序中有以下 Java
代码:
代码:
@Service("Mailer")
public class Mailer {
private final JavaMailSender mailSender;
private void send(final Email email){
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
helper.setFrom(address);
helper.setTo(email.to());
helper.setSubject(email.subject());
helper.setText(email.content(), true); //is this correct?
mailSender.send(mimeMessage);
}
}
MimeMessageHelper setText():
public void setText(String text, boolean html) throws MessagingException {
Assert.notNull(text, "Text must not be null");
MimePart partToUse;
if (isMultipart()) {
partToUse = getMainPart();
}
else {
partToUse = this.mimeMessage;
}
if (html) {
setHtmlTextToMimePart(partToUse, text);
}
else {
setPlainTextToMimePart(partToUse, text);
}
}
我的代码按预期发送了一封电子邮件,但当我收到它时 - 它在 pain text 中。
即HTML
未在电子邮件正文中呈现,并且电子邮件以:
开头
<!DOCTYPE html>
<html lang="en">
<head>
...
如何确保电子邮件以 HTML
而不是纯文本的形式发送和呈现?
尝试像这样直接设置 MimeMessage 内容。
mimeMessage.setContent(email.content(), "text/html");
mimeMessage.saveChanges();
我的 Spring
REST Web 应用程序中有以下 Java
代码:
代码:
@Service("Mailer")
public class Mailer {
private final JavaMailSender mailSender;
private void send(final Email email){
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
helper.setFrom(address);
helper.setTo(email.to());
helper.setSubject(email.subject());
helper.setText(email.content(), true); //is this correct?
mailSender.send(mimeMessage);
}
}
MimeMessageHelper setText():
public void setText(String text, boolean html) throws MessagingException {
Assert.notNull(text, "Text must not be null");
MimePart partToUse;
if (isMultipart()) {
partToUse = getMainPart();
}
else {
partToUse = this.mimeMessage;
}
if (html) {
setHtmlTextToMimePart(partToUse, text);
}
else {
setPlainTextToMimePart(partToUse, text);
}
}
我的代码按预期发送了一封电子邮件,但当我收到它时 - 它在 pain text 中。
即HTML
未在电子邮件正文中呈现,并且电子邮件以:
<!DOCTYPE html>
<html lang="en">
<head>
...
如何确保电子邮件以 HTML
而不是纯文本的形式发送和呈现?
尝试像这样直接设置 MimeMessage 内容。
mimeMessage.setContent(email.content(), "text/html");
mimeMessage.saveChanges();