您好我在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,以便在邮件正文中发送。
<?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>
有没有办法可以动态地将邮件主题设置为邮件正文中的Title属性?
这是我的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>
答案 0 :(得分:3)
您可以使用xpath从消息体中提取标题,并将其设置为名称为Subject的标题。然后邮件组件将使用标题中的值作为电子邮件主题。
的长篇大论
<setHeader headerName="Subject">
<xpath>/Event/Title/text()</xpath>
</setHeader>
请注意,xpath可能很棘手,特别是如果您的xml使用名称空间。如果是这种情况,那么xpath表达式也必须使用命名空间映射。
详情请见