每个用户的SSIS结果集 - >输出到电子邮件

时间:2017-02-16 21:55:32

标签: ssis

您好我试图创建一个将电子邮件发送到用户列表的数据流任务。它还需要为每个用户发送不同的正文。

我已经获得了第一部分,循环选择所有用户并将其分配给变量,然后使用for循环容器向每个不同的用户发送电子邮件。)  我也需要它为身体做同样的事情。但是,我不知道该怎么做。由于正文包含多个行集,而不仅仅是一个用户'喜欢用户的电子邮件查询/变量。 的应答

我最终坚持发送邮件任务并使用每个循环容器生成并发送文件作为电子邮件附件,而不是创建我自己的功能等。 这是满足我需求的最佳和最灵活的解决方案。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

对于html正文部分,您可以尝试:

  1. 使用send mail task,并为每个recipientmessage source

  2. 设置表达式
  3. 编写商店程序,根据不同的收件人修改html部分,并使用Database mail

  4. EXEC msdb..sp_send_dbmail之前发送 SP将如下所示:

    DECLARE    @Body NVARCHAR(MAX)
    DECLARE    @HTMLHead VARCHAR(1000)
    DECLARE    @HTMLTail VARCHAR(1000)
    DECLARE    @CurrentDate VARCHAR(1000)
    DECLARE    @Subject VARCHAR(500)
    DECLARE    @recipients VARCHAR(500)
    
    if (@recipients = ...)
    begin
    set @body =...
    set @body = @HTMLHead +@body + @HTMLTail 
    
    if(--for each recipient you need to iterate)
    
    EXEC msdb..sp_send_dbmail 
            @profile_name   =   'your db profile name',
            @recipients =   @recipients,
            @subject        =  @Subject,
            @body = @Body,
            @body_format    =   'HTML',
            @blind_copy_recipients = @blind_copy_recipients;
    

    我强烈建议使用第一种方法,这是非常清楚的,因为你已经找到第一部分,只需在收件人获得的send mail task之后添加几个expression,并将优先约束设置为{{ 1}}应该类似于@recipient =="John@email.com",然后受约束的任务是您需要配置的send mail task

    对于第二个,您必须首先设置和配置db mail个人资料和帐户,您可以在管理 - >中找到数据库邮件