温馨提示:本文翻译自stackoverflow.com,查看原文请点击:java - Apache Camel: save email to file (.eml) using routes
java apache-camel

java - Apache Camel:使用路由将电子邮件保存到文件(.eml)

发布于 2020-03-27 12:04:11

我正在轮询一个电子邮件帐户,效果很好。我还希望将收到的邮件备份为文件(.eml)。我已经尝试过这样的事情:

from( mailurl+"?username="+username+"&password="+password+"&"+options)
.to( "file://backup?allowNullBody=false&forceWrites=true");

我得到的是每个收到的电子邮件ID-MACHINENAME-2443-1211718892437-1-0的文件,该文件的名称类似于所需目录中的生成名称,但是该文件为空。我知道我可以使用处理器制作自己的.eml文件,但是,没有更简单的方法可以仅使用路由吗?为什么创建的文件为空?

查看更多

查看更多

提问者
Josi
被浏览
65
Josi 2019-07-03 23:47

我发现将每个传入电子邮件备份到.eml文件的备份解决方案,是在创建一个处理器,如下所示:

    public void process(Exchange ex) throws Exception {

    javax.mail.Message mailMessage = ex.getIn(org.apache.camel.component.mail.MailMessage.class).getMessage();

    File file = new File( "backupDirectory", "DesiredFileName.eml");
    DataOutputStream os = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(file)));       
    mailMessage.writeTo(os);
    os.close();
}

此解决方案将复制整个消息,包括所有标题,正文和附件。