【发布时间】:2019-01-16 03:59:50
【问题描述】:
我正在使用 Apache Camel 2.22.0 并且有一个发送电子邮件的简单路由(带有一些属性引用):
public class EmailFailureRoute extends RouteBuilder {
@Override
public void configure() {
from("seda:mail")
.setHeader("To", simple("{{mail.failure.to}}"))
.setHeader("From", simple("{{mail.failure.from}}"))
.setHeader("Subject", constant("TEST!"))
.to("velocity://templates/failure-mail.vm")
.to("{{mail.smtpServer}}");
}
}
我期望得到的是一封普通的电子邮件,邮件正文中包含来自 Velocity 模板的文本。我实际上得到的是一封电子邮件,其中包含来自 Velocity 模板的文本附加到电子邮件。在 MS Outlook 中看起来像这样:
为什么是附件?如何让邮件组件将 Velocity 模板的结果直接插入到邮件正文中?
更新:
通过打开邮件组件上的“debugMode”标志,我能够看到发送到 SMTP 服务器的实际电子邮件的内容。看来我的问题是 Content-Type 是'application/json'!因此,现在附加正文是有道理的,但我不知道为什么要以这种方式设置 Content-Type。即使在邮件端点上设置查询参数 'contentType=text/plain' 对电子邮件的最终 Content-Type 也没有影响。
【问题讨论】:
-
您的邮件是纯文本吗?还是html?尤其是 Outlook 可能对内容很固执。你能把邮件发到一个Gmail帐户并检查一下吗?我不得不通过 Apache camel 邮件组件让 Outlook 正确显示图像。 MS 在 Outlook 中拥有自己的邮件处理方式。
-
邮件组件默认使用 MIME 类型 text/plain,尽管我尝试过 text/plain 和 text/html 的结果相同。我还尝试将电子邮件发送到 GMail 帐户,但电子邮件的正文中仍然有附件而不是文本。
标签: java apache-camel