使用Talend的Tsendmail向多个收件人发送电子邮件

时间:2014-08-29 18:04:48

标签: talend

我正在尝试使用Talend Data Integration来获取Excel电子表格的行并使用电子表格中列出的电子邮件,以获取要使用的tSendMail组件的地址列表。

到目前为止,我有:tFileInputExcel - > tFlowToIterate - > tSendMail。

我已经查看了这些two threads但是我没理由知道我应该从目前的位置去哪里。

1 个答案:

答案 0 :(得分:1)

你似乎走在了正确的轨道上。

当你收集时,你需要迭代地触发tSendMail组件。

Talend组件之间的正常行连接器将数据流从一个组件传递到下一个组件。如果你使用迭代链接,那么它将只发送第一行进行处理到其他子工作。

在这里,您基本上有一个Excel文件中的电子邮件地址列表,因此您希望遍历列表,将它们传递给tSendMail组件。

Simple job setup and layout

如果将tFlowToIterate组件连接到tFileInputExcel组件,则tFlowToIterate将有效地为输入文件中的每一行数据触发一次tSendMail组件。它实际上并没有直接传递任何数据。

相反,tFlowToIterate将数据移动到globalMap,可以从任何下游组件读取数据。要使用这些数据,您可以使用((String)globalMap.get("row1.email"))之类的内容访问它。如果按ctrl + space,例如," To" tSendMail组件中的字段Talend应显示可用变量列表:

Variables available when pressing ctrl+space

在这里,您可以看到有关tFlowToIterate_1组件的一些元数据,以及"电子邮件"列,它是Excel文件架构的唯一列。如果我们选择此项,那么它会自动为我们提供组件的globalMap.get(在我的情况下是前面提到的((String)globalMap.get("row1.email")),因为我将tFlowToIterate的复选框保留为默认值。)

然后,只需正确配置tSendMail组件并使用globalMap中的值作为" To"属性:

tSendMail configuration with the data from the email field being used for the "To" property

使用同样的想法,我们也可以做更复杂的事情。例如,我们可能在Excel文件中有一个自定义邮件正文,还有收件人的名称(也可能已经在tFlowToIterate之前从电子邮件地址解析),因此我们可以执行以下操作:

A more complicated tSendMail configuration that uses the customer name in the email subject and then a custom message body taken from the Excel file