2014-08-29 42 views
1

我想要使用Talend数据集成为了获取Excel电子表格的行并使用电子表格中列出的电子邮件来获取tSendMail组件的地址列表以使用。使用Talend的Tsendmail向多个收件人发送电子邮件

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

我已经看过这些twothreads但是在理解我应该从哪里出发的地方没有运气。

回答

1

你似乎是在正确的轨道上。

正如你所收集的,你需要迭代地触发tSendMail组件。

Talend在组件之间的普通行连接器将数据流从一个组件传递到另一个组件。如果你使用迭代链接,那么它将只发送第一行处理到其他的subjob。

这里你基本上有一个Excel文件中的电子邮件地址列表,所以你想遍历列表,将它们传递给tSendMail组件。

Simple job setup and layout

如果连接tFlowToIterate组件添加到您tFileInputExcel组件则tFlowToIterate将有效地只是触发tSendMail组件一次输入文件的每一行数据。它并不直接传递任何数据。

取而代之的是,tFlowToIterate将数据移动到globalMap,在那里它可以被任何下游组件读取。要使用这些数据,您可以使用类似((String)globalMap.get("row1.email"))的东西访问它。如果按Ctrl +空间,例如,“收件人”字段中tSendMail组件了Talend应显示可用的变量列表:

Variables available when pressing ctrl+space

在这里你可以看到关于tFlowToIterate_1成分,但也有一些元数据“电子邮件”列是Excel文件架构的唯一列。如果我们选择这个,那么它会自动为我们提供组件globalMap.get(在我的情况下,它是前面提到的((String)globalMap.get("row1.email")),因为我离开了tFlowToIterate的复选框作为默认值)。

然后,它只是一个正确配置的tSendMail组件,并使用从办事处一览作为你的“收件人”属性的值事情:

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

相关问题