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

2022-09-02 02:18:29

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

您需要发送 MIME 多部分/备用邮件。您构造此类消息的方式与构造多部分/混合消息的方式基本相同,使用使用新的 MimeMultipart(“替代”)构造的 MimeMultipart 对象。然后,将文本/纯正文部分作为多部分中的第一部分插入,并将文本/html 正文部分作为第二部分插入到多部分中。您需要自己构建普通部分和 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's content
msg.setContent(mp);
LOGGER.log(Level.FINEST, "Sending email {0}", m);
Transport.send(msg);

哪里是我自己的类的一个实例。m


答案 2

推荐