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

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

Вы хотите отправить MIME многостраничное/альтернативное сообщение. Вы создайте такое сообщение, по сути, таким же образом, как вы строите multipart/mixed сообщение с использованием объекта MimeMultipart, построенного используя новый MimeMultipart ( "альтернативный" ). Затем вы вставляете текст /plain часть тела как первая часть в многообразии и вставить текст /html часть тела как вторая часть в многочастности. Вам нужно будет самостоятельно создайте части plain и html содержание. См. RFC2046 для подробной информации о структуре такого сообщения.

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

Ответы

Ответ 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 content
        msg.setContent(mp);
        LOGGER.log(Level.FINEST, "Sending email {0}", m);
        Transport.send(msg);

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