我正在使用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模板的结果直接插入到电子邮件正文中?
更新:
通过打开邮件组件上的“调试模式”标志,我能够看到发送到SMTP服务器的实际电子邮件的内容。我的问题似乎是内容类型是“应用程序/json”!所以现在附加正文是有意义的,但我不知道为什么这样设置内容类型。即使在邮件终端上设置查询参数“内容类型=文本/普通”也对电子邮件消息的最终内容类型没有影响。
你最近怎么样,经历了类似的事情,并通过以下方式解决了它,希望对你有所帮助
@Handler
public void attachmentValidate(@ExchangeProperty("MAIL_ATTACHMENTS") List<Attachment> attachments,
Exchange exchange) throws Exception {
Message in = exchange.getIn();
if (attachments != null) {
for (Attachment attachment : attachments) {
FileNameMap fileNameMap = URLConnection.getFileNameMap();
String mimeType = fileNameMap.getContentTypeFor(attachment.getName()
.substring(attachment.getName().indexOf('.'), attachment.getName().length()));
if (StringUtils.isEmpty(mimeType)) {
mimeType = "application/octet-stream";
}
byte[] decoded = Base64.getDecoder().decode(attachment.getValue());
in.addAttachment(attachment.getName(), new DataHandler(new ByteArrayDataSource(decoded, mimeType)));
}
}
exchange.setProperty("MAIL_ATTACHMENTS", attachments);
}
虽然我仍然不明白这里发生了什么,但我确实有一个可行的解决方案。我更改电子邮件内容类型的唯一方法是在路由到邮件endpoint之前在 Camel 邮件上设置“内容类型”标头:
.setHeader("Content-Type", constant("text/plain"))
我甚至无法通过在邮件组件上使用'ContentType'查询参数来更改内容类型。
问题内容: 我的输入文件是一个CSV文件,通过运行一些包含python Tabulate模块的python脚本,我创建了一个如下表: tabulate_output 或 我想将此表发送到电子邮件正文中,而 不是 使用python 作为 附件发送 。 我已经创建了sendMail函数,并且期望在mail_body中发送表。 问题答案: 此代码以典型的纯文本格式以及html multipart / a
我想用mailto标签发送电子邮件,附带一个pdf文件作为附件。mailto标记使用以下方法打开邮件窗口,其中包含传递的参数,如to和subject: 但是,附件作为一个参数不起作用。请建议如何在手机中发送pdf附件。 谢啦
我试图在javamail API的帮助下发送两个附件,但发件人正在接收附件作为转发消息传递给发件人的邮件。我也看不到邮件中的正文。我正在向outlook的电子邮件客户端发送邮件。它类似的附件在同一封邮件中以独立邮件的形式出现,当我点击邮件中的独立邮件时,它会显示附件。就像我在同一封邮件中打开了另一封邮件一样。谁能检查一下我做错了什么吗 下面是代码 我只想让发件人在一个窗口中接收附件。
我在网上看到了很多代码,但它们似乎都遇到了问题。 使用以下功能创建并保存文件: 然而,当运行下面的代码来发送文件时,我一直遇到问题,并建议使用此链接的所有答案https://stackoverflow.com/questions/48117511/exposed-beyond-app-through-clipdata-item-geturi,当打开Gmail时,它说无法附加文件 如果有任何方法可以
问题内容: 我创建了一个脚本,该脚本每天晚上在Linux服务器上运行,该脚本用于将每个MySQL数据库备份到.sql文件,并将它们打包为压缩的.tar文件。我要完成的下一步是通过电子邮件将该tar文件发送到远程电子邮件服务器以进行保管。我可以通过管道备份文本文件来向正文中的原始脚本发送电子邮件,如下所示: 回显备份文件的文本,该文本将通过收件人的电子邮件地址作为参数传递到程序中。 虽然可以满足我的
我也遇到了一个问题,而发送邮件正文的日语。 我使用了mimeutility.encodeText(subject,“UTF-8”,“B”),但这只适用于subject而不适用于邮件正文中的日语文本。 我正在使用阿帕奇骆驼邮件。 请帮忙