2017-03-10 127 views
2

使用SSDT for Visual Studio 2013,我使用SmtpClient类通过ssis脚本发送电子邮件通知。SSIS脚本任务问题

 public void Main() 
    { 
     SmtpClient v_EmailClient; 
     string v_From = Dts.Variables["User::vFrom"].Value.ToString(); 
     string v_To = Dts.Variables["User::vTo"].Value.ToString(); 
     string v_EnvNameToSubject = Dts.Variables["User::vEnvNameToSubject"].Value.ToString(); 

     MailMessage v_EmailMessage = new MailMessage(v_From, v_To); 
     v_EmailMessage.IsBodyHtml = true; 
     v_EmailMessage.Subject = v_EnvNameToSubject + "SSIS email notification"; 
     //Concatenation of variable with the standard message does not work 

     v_EmailMessage.Body = "Message text"; 
     v_EmailClient = new SmtpClient("SmtpServer"); 
     v_EmailClient.UseDefaultCredentials = true; 
     v_EmailClient.Send(v_EmailMessage); 

     Dts.TaskResult = (int)ScriptResults.Success; 
    } 

当我尝试连接变量v_EnvNameToSubject与标准主题文本不起作用。我尝试使用try catch块来找出实际的错误信息,但这也没有帮助。

+0

返回什么类型的错误?它是否仅在您的主题中插入:“SSIS电子邮件通知”?在你的例子中取消变量vEnvNameToSubject ... –

+0

我得到非常通用的DTS脚本任务:运行时错误弹出。我尝试使用try catch块,甚至没有帮助。所以,我不确定究竟是什么让它失败。 – user25407

+0

那个通用的错误,不尊重try catch通常意味着你拼错了你的变量或者没有正确地引用第三方工具。尝试注释掉dts.variable ....行,看看你是否过去了这个错误。 –

回答

0

首先,请检查您的变量名称(和案件)vFromvTovEnvNameToSubject因为他们是区分大小写的。

,尝试串联这些字符串的另一种方式(使用String.Concat()功能或使用stringbuilder

System.Text.StringBuilder sb = new System.Text.StringBuilder(); 
sb.AppendLine(v_EnvNameToSubject); 
sb.AppendLine("SSIS email notification"); 
v_EmailMessage.Subject = sb.ToString(); 

或者

v_EmailMessage.Subject = String.Concat(v_EnvNameToSubject,"SSIS email notification") 

,请检查您的变量范围,并将它们添加到脚本任务ReadOnly Variables