【发布时间】:2016-05-21 04:46:10
【问题描述】:
我正在尝试使用 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;to、from、subject、messageBody 是 String 对象)。
要设置内容,我也试过:
message.setText(messageBody, true);
message.setText(messageBodyPlain, messageBodyText);
我还尝试使用多部分消息(将MimeMessageHelper 的第二个参数设置为true)和MimeMessagePreparator。
查看传递的消息,它们不包含 Content-Type: 或 Subject 标头。
对于我的测试,我使用了我公司的 smtp 服务器和 Gmail 的 smtp 服务器。
更新:问题已解决
原来我的问题是 this other one 的重复:一堆 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>
【问题讨论】:
-
你试过
MimeMessagePreparator吗? -
是的,我也试过
MimeMessagePreparator,结果一样
标签: java spring smtp jakarta-mail html-email