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

时间:2019-06-13 09:39:42

标签: java apache-camel

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

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

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

1 个答案:

答案 0 :(得分:0)

我发现的将每个收到的电子邮件备份到.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();
}

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