将文件动态附加到SSIS中的电子邮件

时间:2017-07-13 13:08:31

标签: ssis

我要求将发票作为附件发送给客户。 enter image description here

如上面的屏幕截图所示,数据库中的表包含客户名称和附件名称(包含名称)。我需要遍历此表并将附件发送给相关客户。这些相同的附件保存在文件夹中。请帮我一个方法。

3 个答案:

答案 0 :(得分:1)

正如Alleman指出的那样,sp_send_dbmail是执行任务的最佳选择。需要分配的唯一权限是 msdb 数据库中的 DatabaseMailUser 数据库角色。

但是,如果您觉得需要通过SSIS解决。以下是要遵循的步骤 -

  1. 创建一个对象变量说objInvoiceAttachmentList并跟随三个变量 - sCustomerName,sAttachmentFullFilePath,sMailId

  2. 使用“执行SQL任务”并运行查询以获取客户数据列表,如下所示。将结果集设置为“完整结果集”。在“ResultSet”选项卡中,将其分配给上面的对象变量。 (假设您的客户有一个名为MailId的列)

    从dbo中选择名称,附件,MailId.InvoiceAttachments

  3. 使用'For Each Loop Container'。在“Collection”中将枚举数设置为“Foreach ADO Enumerator”,并将集合变量设置为objInvoiceAttachmentList。在“变量映射”选项卡中,按查询顺序分配三个变量。

  4. 在foreach循环任务中使用“发送邮件任务”。转到“表达式”并使用正确的有效SMTP连接设置相应的变量。

答案 1 :(得分:1)

SSIS很容易。

  • 将文件名获取到SSIS中的变量
  • 打开发送邮件任务,然后转到表达式。
  • 然后您可以将 FileAttachment 属性设置为上面的变量。

答案 2 :(得分:0)

您不需要使用SSIS。事实上,SSIS实际上并不是一个非常好的工具。

sp_send_dbmail可以从文件系统发送附件。使用@file_attachments参数。