0

我有一个结构为的 SQL 表

Serial  EMAIL
543     ali@hotmail.com
789     paul@gmail.com
485     paul@gmail.com
654     sam@yahoo.com

然后我在文件名类似的文件夹中有pdf附件

Happy 543.pdf
Happy 789.pdf
Happy 485.pdf
Happy 654.pdf

我想将每个序列号与文件名的最后 3 个字符匹配,然后将该特定 pdf 通过电子邮件发送到相应的电子邮件地址。

我已经从存储在表中的表中提取了电子邮件地址,然后将该电子邮件地址与 SENDMAIL 任务TOline表达式属性一起使用。电子邮件按计划进行。但是当涉及到附加文件时,当我不明白我将如何用电子邮件附加相应的文件时。有人请帮助它将不胜感激

4

1 回答 1

2

我假设你的包裹看起来像这样

在此处输入图像描述

创建变量

变量的使用有助于将涉猎者与专业人士区分开来。这是正确的,因为您可以在包上放置一个断点来检查变量。检查任务上的表达式不能这样说。

在此处输入图像描述 如您所见,我创建了一些变量。

  • CurrentID,字符串,从我的 foreach 循环中填充
  • 收件人,字符串,从我的 foreach 循环中填充
  • FolderInput,字符串,文件将存在的基本文件夹
  • ResultSet,对象,填充在执行 SQL 任务中,在 Foreach 循环中分解
  • CurrentFile,String,定义文件的完整路径。这是一个表达式@[User::FolderInput] + "\\Happy " + (DT_WSTR, 3) @[User::CurrentID]+ ".pdf"

随着 Foreach 循环的枚举,CurrentID 和 Recipient 的值会发生变化。由于 CurrentID 更改,我的映射将为每个人更新,因此当发送邮件任务触发时,它会发送正确的文件。

未解决 - 动态文件名和子文件夹。CurrentFile 上的表达式假定该文件将存在并且将始终命名为Happy NNN.pdfNNN 是 CurrentID 值。如果您可以拥有Hap 123.pdf,Joyous 123.pdfSubfolder\Happy 123.pdf,那么您可能会在脚本任务中完成工作以获取文件名的值。这是一个单独的 SO 问题。

表达你自己

在发送邮件任务上,第三个选项卡显示了此任务的表达式。这是 SSIS 工具包中每个任务上最强大的选项。这里我们将指定收件人是变量@[User::Recipient],我们发送的文件是[@User::CurrentFile]

在此处输入图像描述

一,相当重要的事情要注意。如果文件不存在,发送邮件任务将失败。

于 2013-05-24T21:11:44.133 回答