【问题标题】:Camel Mail - dynamic email subject - can't change headerCamel Mail - 动态电子邮件主题 - 无法更改标题
【发布时间】:2013-01-08 16:20:44
【问题描述】:

显然这是在 Java 中。我已经设置了一个到 SMTP 路由的骆驼路由,但我希望邮件的主题是动态的,并且基于它收到的输入消息

例如主题“第 52 行已关闭”

电子邮件的正文很好,看起来很完美。但我似乎无法设置电子邮件的主题,它总是被接收为“无主题”

在我使用的骆驼处理器中

Message msg = exchange.getOut();

// This works perfectly
msg.setBody( "Some body stuff " + lineProblem + " and some other details"); 

// PROBLEM - This has no effect (the order of the statements has no effect)
msg.setHeader( "Subject", " line " + lineProblem + " is down" );

但它总是在收件箱中收到“无主题”

我可以看到其他设置主题的方法,无论是在端点级别还是在路由级别,但当然这些都不会让我在消息级别设置主题

有什么想法吗?

【问题讨论】:

    标签: email dynamic header apache-camel subject


    【解决方案1】:

    尝试exchange.getIn().setHeader(...),因为 Producer/Binding 遍历 IN 消息标头以填充主题等。

    更多信息请参见 MailBinding.appendHeadersFromCamelMessage() 代码:

    https://svn.apache.org/repos/asf/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailBinding.java

    【讨论】:

    • exchange.getIn().setHeader... 不幸的是没有效果。 exchange.getOut() 消息直接表示正在发送到邮件组件的邮件。在我的示例中,exchange.getIn() 表示有关“虚线”的数据
    • 骆驼邮件代码遍历 exchange.getIn().getHeaders().entrySet() 以填充主题/发件人/发件人
    【解决方案2】:

    基本上每个 Exchange 都有一个主题,因此如果您需要在每封电子邮件上使用不同的主题,请使用拆分器将每封电子邮件作为单独的 Exchange 单独处理

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-24
      • 2023-03-25
      相关资源
      最近更新 更多