Java 驼峰:如何将附件与备选邮件文本(纯文本/html)一起发送

Java 驼峰:如何将附件与备选邮件文本(纯文本/html)一起发送,java,email,apache-camel,email-attachments,Java,Email,Apache Camel,Email Attachments,我正试图用下面的代码将邮件附件和备选正文文本一起发送。 将接收邮件客户端配置为HTML正文后,一切正常:邮件文本和附件在邮件客户端(Outlook、Thunderbird)中正确显示 但是,当我切换到纯文本时,附件不显示/不可下载-它似乎被电子邮件客户端“吞没”。 这是正常的行为吗?在这两种情况下,附件是可见的,消息应该是什么样子?非常感谢您的帮助 @Component public class MyRouteBuilder3 extends RouteBuilder { /********

我正试图用下面的代码将邮件附件和备选正文文本一起发送。 将接收邮件客户端配置为HTML正文后,一切正常:邮件文本和附件在邮件客户端(Outlook、Thunderbird)中正确显示

但是,当我切换到纯文本时,附件不显示/不可下载-它似乎被电子邮件客户端“吞没”。 这是正常的行为吗?在这两种情况下,附件是可见的,消息应该是什么样子?非常感谢您的帮助

@Component
public class MyRouteBuilder3 extends RouteBuilder
{
  /*****************************************************************************
   * Camel (3.4.0)
   * @throws Exception
   ****************************************************************************/
  @Override
  public void configure() throws Exception
  {
    from( "direct:mail" )
      .doTry()
        .setBody( constant( new Invoice( "111111", "9999999999", "13.03.2020")))

        .setHeader( "copyOfBody", simple( "${body}" ))
        .to( "velocity://templates/template_txt.vm?encoding=utf-8" )
        .setHeader( "plaintext", simple( "${body}" ))

        .setBody( simple( "${header.copyOfBody}" ))
        .to( "velocity://templates/template_html.vm?encoding=utf-8" )

        .setHeader( "contentType",   constant( "text/html;charset=UTF-8" ))
        .setHeader( "subject",       simple( "Your invoice" ))
        .setHeader( "from",          simple( "sender@localhost.localdomain" ))
        .setHeader( "to",            simple( "receiver@localhost.localdomain" ))

        .process( exchange ->
        {
          AttachmentMessage attMsg = exchange.getIn( AttachmentMessage.class );
          attMsg.addAttachment( "invoice.pdf",
            new DataHandler( new FileDataSource( new File( "C:/tmp/invoice.pdf"))));
        })

        .to( "smtp://127.0.0.1:25?debugMode=true&alternativeBodyHeader=plaintext" )
    ;
  }
}