JavaMail: MimeMessage отправляется в виде обычного текста, когда ожидается HTML? - PullRequest
0 голосов
/ 10 февраля 2020

В моем веб-приложении Spring REST есть следующий 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 непрозрачно текст

1 Ответ

1 голос
/ 10 февраля 2020

Попробуйте установить содержимое MimeMessage прямо так.

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