如何从数据库中获取值并将其用于Mule 3.4中的SMTP连接器

时间:2013-10-23 11:28:44

标签: database smtp mule

我想从数据库中读取一些电子邮件详细信息。你能帮帮我吗? 我的配置xml:

<jdbc-ee:mssql-data-source name="MS_SQL_Data_Source1" user="sa" password="Pa$$w0rd" url="jdbc:sqlserver://192.168.1.156;databaseName=Almaty" transactionIsolation="UNSPECIFIED" doc:name="MS SQL Data Source"/>
<jdbc-ee:connector name="Database" dataSource-ref="MS_SQL_Data_Source1" validateConnections="true" queryTimeout="-1" pollingFrequency="0" doc:name="Database"/>
<flow name="DCNotifierFlow1" doc:name="DCNotifierFlow1">
    <quartz:inbound-endpoint jobName="myjob" repeatInterval="3600000" responseTimeout="10000" doc:name="Quartz">
        <quartz:event-generator-job groupName="myjob" jobGroupName="myjob"/>
    </quartz:inbound-endpoint>
    <jdbc-ee:outbound-endpoint exchange-pattern="request-response" queryTimeout="-1" doc:name="Database" connector-ref="Database" queryKey="select">
        <jdbc-ee:query key="procedura1" value="call sp_DataCollectionNotify()"/>
        <jdbc-ee:query key="select" value="select name from aaa"/>
    </jdbc-ee:outbound-endpoint>
    <message-properties-transformer doc:name="Message Properties">
        <add-message-property key="subject" value="#[map-payload:name]"/>
    </message-properties-transformer>
    <smtps:outbound-endpoint host="smtp.mail.ru" port="465" user="bekbol_shynar%40mail.ru" password="" to="shiko_18@mail.ru" from="bekbol_shynar@mail.ru" subject="${smtp.subject}" responseTimeout="10000" doc:name="SMTP"/>. 
</flow>

我有一个错误:带有表达式“name”的Expression Evaluator“map-payload”返回null但需要一个值。

提前致谢。

1 个答案:

答案 0 :(得分:1)

JDBC出站端点之后的有效负载是地图列表,而不是地图,因此您无法使用map-payload。
如果你至少有一行,你可以像这样访问它:

#[payload[0]['name']]