骆驼豆 - 动态电子邮件主题

Camel Beans - dynamic email subject

您好,我已经在 activemq 中配置 camel.xml 文件来发送邮件。这是 xml 配置代码

<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="
 http://camel.apache.org/schema/spring                                                   http://camel.apache.org/schema/spring/camel-spring.xsd
 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<propertyPlaceholder id="properties" location="classpath:properties"/>

<route>
  <description>Event Detected</description>
  <from uri="activemq:topic:Events?selector=JMSType='Event'"/>
  <to uri="xslt:file:{{activemq.conf}}/XLSs/Event.xsl"/>
  <to uri="smtp://mail.net:25?from=abc@abc.com&amp;to=abc@abc.com&amp;subject= Hello World!&amp;contentType=text/html"/>
</route>
</camelContext>
</bean>
</beans>

这里是我用来将 xml 转换为 html 的 Event.xslt,以便在邮件中发送 body。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet   version="1.0"                  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/Event">
  <html>
    <head>
      <title>Event Detected!</title>
    </head>
    <body>
    <h2>
      Event Detected!
    </h2>       
    <xsl:value-of select="Title"/>       
  </body>
</html>

有没有一种方法可以动态地将电子邮件主题设置为消息 body 中的标题 属性?

这也是我的xml

 <?xml version="1.0" encoding="utf-8" ?> 
 <Event xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <Title>Test</Title>  
 </Event>

您可以使用 xpath 从消息 body 中提取标题,并设置为名称为主题的 header。然后邮件组件将使用 header 中的值作为电子邮件主题。

有点像

<setHeader headerName="Subject">
  <xpath>/Event/Title/text()</xpath>
</setHeader>

请注意,xpath 可能很棘手,尤其是当您的 xml 使用名称空间时。如果是这种情况,则 xpath 表达式也必须使用名称空间映射。

查看更多详情