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

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


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

最佳答案

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


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

关于java - Apache Camel:使用路由将电子邮件保存到文件(.eml),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56577633/

10-11 08:52
查看更多