Как отправить письмо как с обычным текстом, так и с текстом HTML, чтобы каждый читатель мог выбрать подходящий для него формат? - PullRequest
18 голосов
/ 20 июля 2011

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

Вы хотите отправить MIME multipart / альтернативное сообщение.Вы создаете такое сообщение по существу так же, как вы создаете многочастное / смешанное сообщение, используя объект MimeMultipart, созданный с использованием нового MimeMultipart («альтернатива»).Затем вы вставляете текстовую / обычную часть тела в качестве первой части в составную часть и вставляете текстовую / HTML часть тела в качестве второй части в составную часть.Вам нужно будет создать простые и HTML части самостоятельно, чтобы иметь соответствующий контент.См. RFC2046 для подробностей о структуре такого сообщения.

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

1 Ответ

65 голосов
/ 20 июля 2011

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

        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 - это экземпляр моего собственного класса.

...