如何使用纯文本和HTML文本发送邮件,以便每个邮件阅读器可以选择适合它的格式?

Tim*_*Tim 19 java email jakarta-mail

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

您将要发送MIME多部分/替代消息.使用使用新MimeMultipart("alternative")构造的MimeMultipart对象,构造此类消息的方式与构造multipart/mixed消息的方式基本相同.然后,将text/plain body部分作为multpart中的第一部分插入,并将text/html body部分作为multipart中的第二部分插入.您需要自己构建plain和html部分以获得适当的内容.有关此类消息的结构的详细信息,请参阅RFC2046.

有人可以给我看一些示例代码吗?

zac*_*usz 66

这是我自己的代码的一部分:

        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);
Run Code Online (Sandbox Code Playgroud)

m我自己班级的实例在哪里.

  • 请注意,textPart 和 htmlPart 添加到 MultiPart 实例的顺序很重要。如果您以相反的方式添加它们,即使 html 可用(至少在 gmail 上),纯文本部分也会显示给用户。 (2认同)