【问题标题】:HTML email is getting displayed as plain/text with javamail in Gmail and YahooHTML 电子邮件在 Gmail 和 Yahoo 中使用 javamail 显示为纯文本/文本
【发布时间】:2020-01-10 22:37:08
【问题描述】:

尝试使用 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 内容。

【问题讨论】:

    标签: spring smtp jakarta-mail


    【解决方案1】:

    你真的不需要多部分,因为你的消息只有一个部分。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-07-08
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 2021-05-17
      • 2014-10-22
      • 2013-08-29
      相关资源
      最近更新 更多