当前位置: 首页 > 知识库问答 >
问题:

使用Spring的JavaMailSender发送的html邮件没有主题和纯文本

景仲渊
2023-03-14

我正在尝试使用Spring的JavaMailSenderImpl在Spring(版本3.0.5. RELEASE)网络应用程序中发送一封html电子邮件。

电子邮件已发送,但不正确:

  • 他们错过了主题
  • To字段显示为空或显示为“未公开的收件人:;”
  • html正文显示为纯文本

我尝试了以下方法,但没有成功:

MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper message = new MimeMessageHelper(mimeMessage, false, "utf-8");

message.setTo(to);
message.setFrom(from);
message.setReplyTo(from);
message.setSubject(StringUtils.trim(subject));                       
message.setSentDate(new Date());

mimeMessage.setContent(StringUtils.trim(messageBody), "text/html");

mailSenderImpl.send(mimeMessage);

mailSender是从应用程序上下文检索到的Spring的JavaMailSenderImpl;来自主题消息体字符串对象)。

为了设置内容,我还尝试了:

message.setText(messageBody, true);
message.setText(messageBodyPlain, messageBodyText);

我还尝试使用多部分消息(将MimeMessageHelper的第二个参数设置为true)并使用MimeMessagePreator

查看传递的消息,它们不包含Content-Type:主题标头。

在我的测试中,我使用了我公司的smtp服务器和Gmail的smtp服务器。

更新:问题已解决

原来我的问题是另一个问题的重复:一堆Maven依赖项包括geronimo-javamail_1。4_spec,这就是格式错误的电子邮件的原因。我只需要排除这个jar,像这样编辑pom.xml:

<dependency>
    <groupId>org.apache.ws.commons.axiom</groupId>
    <artifactId>axiom-api</artifactId>
    <version>1.2.8</version>
    <exclusions>
          <exclusion>
                <groupId>org.apache.geronimo.specs</groupId>
                <artifactId>geronimo-javamail_1.4_spec</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.apache.ws.commons.axiom</groupId>
        <artifactId>axiom-dom</artifactId>
        <version>1.2.8</version>
        <exclusions>
           <exclusion>
                <groupId>org.apache.geronimo.specs</groupId>
                <artifactId>geronimo-javamail_1.4_spec</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.apache.ws.commons.axiom</groupId>
        <artifactId>axiom-impl</artifactId>
        <version>1.2.8</version>
        <exclusions>
           <exclusion>
                <groupId>org.apache.geronimo.specs</groupId>
                <artifactId>geronimo-javamail_1.4_spec</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

共有1个答案

秦信瑞
2023-03-14

尝试创建mimessagehelper,将multipart标志设置为true;

MimeMessageHelper message = new MimeMessageHelper(mimeMessage, true, "utf-8");
 类似资料:
  • 我正在尝试在Spring Boot中使用JavaMailSender发送电子邮件。我尝试了几乎所有的方法,但仍然得到这个错误。请建议我该怎么做才能使我的代码正常工作?谢谢!!! 这是我发送电子邮件的代码。 application.properties文件 当我尝试运行代码时,遇到以下错误异常

  • 问题内容: 我遇到了一个问题:直到今天,我使用包含以下内容的标头使用PHP发送HTML邮件 现在,我添加了添加附件的功能。为此,我不得不将此行更改为 现在,使用,邮件的其余部分(即普通文本)将显示为文本/纯文本。我怎么能知道附件有效并且邮件文本仍然是HTML? 问题答案: 要发送带有附件的电子邮件,我们需要使用multipart / mixed MIME类型,该类型指定混合类型将包含在电子邮件中。

  • 问题内容: 在回答的问题表明,在电子邮件正文中添加html-markup可以解决问题。该解决方案正确吗? 但是,如果收件人的电子邮件服务器/客户端不支持HTML电子邮件怎么办? 例如,当使用Apache Commons email时,我将执行以下操作: 如果收件人电子邮件服务器/客户端不支持HTML,有什么方法可以告诉Gmail API退回哪些电子邮件? PS我对Java代码示例特别感兴趣。 谢谢

  • 我已经在Gmail中的Check mail from other accounts(使用POP3)和Send mail as(使用TLS在587端口通过mail.mydomain.com安全连接发送邮件)下设置了我的cpanel电子邮件地址 看着Roundcube,我可以看到里面有收到的邮件,但没有发送的邮件——尽管Gmail是通过我的域服务器发送的。 有没有办法查看通过Gmail收发的邮件?

  • 问题内容: 如何使用Shell脚本发送HTML电子邮件? 问题答案: 首先,您需要撰写邮件。最低要求由以下两个标头组成: …以及适当的邮件正文: 一旦有了它,就可以将适当的信息传递给mail命令: 这是一个过于简化的示例,因为您还需要注意字符集,编码,最大行长…但这基本上就是这个主意。 另外,您可以用Perl或PHP而不是普通的Shell编写脚本。 Shell脚本基本上是一个文本文件,带有Unix

  • 本文向大家介绍Spring Boot中利用JavaMailSender发送邮件的方法示例(附源码),包括了Spring Boot中利用JavaMailSender发送邮件的方法示例(附源码)的使用技巧和注意事项,需要的朋友参考一下 快速入门 在Spring Boot的工程中的pom.xml中引入spring-boot-starter-mail依赖: 如其他自动化配置模块一样,在完成了依赖引入之后,