骆驼豆 - 动态电子邮件主题
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&to=abc@abc.com&subject= Hello World!&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 表达式也必须使用名称空间映射。
查看更多详情
您好,我已经在 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&to=abc@abc.com&subject= Hello World!&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 表达式也必须使用名称空间映射。
查看更多详情