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

Из http://www.oracle.com/technetwork/java/faq-135477.html#sendmpa:

Вы захотите отправить составное/альтернативное сообщение MIME. Вы создаете такое сообщение по существу так же, как вы создаете составное/смешанное сообщение, используя объект MimeMultipart, созданный с использованием new MimeMultipart("alternative"). Затем вы вставляете часть text/plain body в качестве первой части в составную часть и вставляете часть тела text/html в качестве второй части в составную часть. Вам нужно будет самостоятельно создать простую и HTML-части, чтобы иметь соответствующий контент. Подробную информацию о структуре такого сообщения см. в RFC2046.

Может ли кто-нибудь показать мне пример кода для этого?


person Tim    schedule 20.07.2011    source источник


Ответы (1)


Это часть моего собственного кода:

final Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(senderAddress, senderDisplayName));
msg.addRecipient(Message.RecipientType.TO,
        new InternetAddress(m.getRecipient(), m.getRecipientDisplayName()));
msg.setSubject(m.getSubject());
// Unformatted text version
final MimeBodyPart textPart = new MimeBodyPart();
textPart.setContent(m.getText(), "text/plain"); 
// HTML version
final MimeBodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent(m.getHtml(), "text/html");
// Create the Multipart.  Add BodyParts to it.
final Multipart mp = new MimeMultipart("alternative");
mp.addBodyPart(textPart);
mp.addBodyPart(htmlPart);
// Set Multipart as the message's content
msg.setContent(mp);
LOGGER.log(Level.FINEST, "Sending email {0}", m);
Transport.send(msg);

Где m — экземпляр моего собственного класса.

person zacheusz    schedule 20.07.2011
comment
Просто обратите внимание, что порядок, в котором textPart и htmlPart добавляются в экземпляр MultiPart, важен. Если вы добавите их наоборот, текстовая часть будет отображаться пользователю, даже если html доступен (по крайней мере, на gmail). - person Possible; 07.12.2020