繁体   English   中英

JavaMail:当需要 HTML 时以纯文本形式发送 MimeMessage?

[英]JavaMail: MimeMessage sent as plain text when HTML is expected?

我的Spring REST Web App 中有以下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);
        }
    }

我的代码按预期发送了一封电子邮件,但是当我收到它时 - 它是痛苦的文本

HTML未呈现在电子邮件正文中,并且电子邮件以以下内容开头:

<!DOCTYPE html>
<html lang="en">
   <head>
...

如何确保以HTML而非纯文本形式发送和呈现电子邮件?

尝试像这样直接设置 MimeMessage 内容。

mimeMessage.setContent(email.content(), "text/html");
mimeMessage.saveChanges();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM