0

尝试使用 java-mail 发送 HTML 电子邮件。我可以在 Outlook 中看到 HTML 格式的电子邮件,但 Gmail 和 Yahoo 不显示 HTML 格式,它们将电子邮件显示为没有 HTML 格式的纯文本。

我正在使用公司的 SMTP 服务器向用户发送电子邮件。

我尝试了以下代码,并且 msgcontent 是 StringBuilder 在以下代码中:

Properties prop = System.getProperties();
    prop.put("mail.smtp.auth", "false");
    prop.put("mail.smtp.starttls.enable","false");
    prop.put("mail.smtp.host", SMTP_SERVER);
    Session session = Session.getInstance(prop);
    MimeMessage msg = new MimeMessage(session);
 MimeMultipart multipart = new MimeMultipart();
      MimeBodyPart content = new MimeBodyPart();
      content.setHeader("content-type", "text/html");
      msg.setFrom(new InternetAddress(EMAIL_FROM));
      msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(EMAIL_TO, false));
      msg.setSubject(EMAIL_SUBJECT);
      content.setContent(msgcontent.toString(), "text/html");
      multipart.addBodyPart(content);
      msg.setContent(multipart);

我希望在 Gmail、Yahoo 等所有电子邮件客户端中显示 HTML 电子邮件。目前只有 Outlook 可以显示 HTML 内容。

4

1 回答 1

0

您实际上并不需要多部分,因为您的消息只有一个部分。

您可以通过将两个 content.set* 行替换为以下内容来简化内容设置:

content.setText(msgcontent.toString(), "utf-8", "html");

您使用的是什么版本的 JavaMail?

如果您检查收到的消息的原始 MIME 内容并将其与您发送的消息的原始 MIME 内容进行比较,它们是否不同?

于 2019-09-09T22:28:48.767 回答