как отправить HTML письмо - PullRequest
59 голосов
/ 07 марта 2011

Я должен отправить HTML-файл по электронной почте, но не как вложение.

Message simpleMessage = new MimeMessage(mailSession);
try {
   fromAddress = new InternetAddress(from);
   toAddress = new InternetAddress(to);

} catch (AddressException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
}

try {
    simpleMessage.setFrom(fromAddress);
    simpleMessage.setRecipient(RecipientType.TO, toAddress);

    simpleMessage.setSubject(subject);
    simpleMessage.setText(text);

    Transport.send(simpleMessage);
} catch (MessagingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

Это отправка электронной почты просто с текстовым сообщением. Я хочу отправить HTML-контент, который хранится в другом файле, но не в виде вложения

1 Ответ

116 голосов
/ 08 марта 2011

Не передавайте ваши MimeMessage до Message:

MimeMessage simpleMessage = new MimeMessage(mailSession);

Затем, когда вы хотите установить тело сообщения, либо позвоните

simpleMessage.setText(text, "utf-8", "html");

или позвоните

simpleMessage.setContent(text, "text/html; charset=utf-8");

Если вы предпочитаете использовать кодировку, отличную от utf-8, замените ее в соответствующем месте.

JavaMail имеет дополнительный, бесполезный уровень абстракцииэто часто оставляет вас в руках такие классы, как Multipart, Message и Address, которые имеют гораздо меньшую функциональность, чем реальные подклассы (MimeMultipart, MimeMessage и InternetAddress), которые фактически создаются...

...