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

时间:2016-02-10 17:24:28

标签: java spring smtp javamail html-email

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

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

  • 他们错过了主题
  • “收件人”字段显示为空或“未公开的收件人:;”
  • 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; tofromsubjectmessageBodyString个对象。 / p>

要设置内容,我也尝试过:

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

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

查看已投放的邮件,它们不包含Content-Type:Subject标题。

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

更新:问题已解决

原来我的问题是this other one的重复:包含geronimo-javamail_1.4_spec的一堆Maven依赖项,这是导致格式错误的电子邮件的原因。我只需要排除这个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 个答案:

答案 0 :(得分:0)

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

MimeMessageHelper message = new MimeMessageHelper(mimeMessage, true, "utf-8");