首页 > 解决方案 > 通过作业执行时的SSIS包成功执行但不发送电子邮件

问题描述

我有一个 SSIS 包,它有一个发送电子邮件的脚本任务。从 Visual Studio 本地执行包时,电子邮件已成功发送。但是,当我通过 SSIS 目录部署包,创建并执行作业时,作业成功运行,但我没有收到任何邮件。此外,从集成服务目录下执行包时,它执行没有任何问题,仍然没有发送电子邮件。我创建了一个使用凭据的代理帐户,我猜这些步骤中的某处可能缺少链接或设置错误。有谁知道应该如何设置代理帐户主体?或者可能与此有关?我已经尝试过这些:

在此处输入图像描述

我创建了 ac# Console 应用程序,仅用于电子邮件发送部分,当在同一台服务器上执行该应用程序时,它会毫无问题地发送电子邮件。


我的问题的附加信息:

String SendMailFrom = Dts.Variables["$Project::Sender"].Value.ToString();
String SendMailFromPassword = Dts.Variables["$Project::SenderPassword"].GetSensitiveValue().ToString();
String SendMailTo = Dts.Variables["$Project::ToMail"].Value.ToString();
String SMTPServerName = Dts.Variables["$Project::SMTPServerName"].Value.ToString();
int SMTPServerPort = int.Parse(Dts.Variables["$Project::Port"].Value.ToString());
String PackageName = Dts.Variables["System::PackageName"].Value.ToString();
String ErrorDescription = Dts.Variables["System::ErrorDescription"].Value.ToString();
String ErrorCode = Dts.Variables["System::ErrorCode"].Value.ToString();
String SourceName = Dts.Variables["System::SourceName"].Value.ToString();

String Subject = PackageName + " Package Failed On " + DateTime.Now.ToString();
String Message = PackageName + " Package Failed On " + DateTime.Now.ToString();

try

    MailMessage email = new MailMessage();
    SmtpClient SmtpServer = new SmtpClient(SMTPServerName);
    // START
    email.From = new MailAddress(SendMailFrom);
    email.To.Add(SendMailTo);
    email.Subject = Subject;
    email.Body = Message;
    //END

    SmtpServer.Port = SMTPServerPort;
    SmtpServer.UseDefaultCredentials = false;
    SmtpServer.Credentials = new System.Net.NetworkCredential(SendMailFrom, SendMailFromPassword);
    SmtpServer.EnableSsl = true;

    SmtpServer.Send(email);
}
catch (Exception ex)
{
}

Dts.TaskResult = (int)ScriptResults.Success; 

标签: sql-serverssisssmsjobs

解决方案


感谢 Francesco,最后我选择了配置了数据库邮件的参数化“执行 SQL 任务”方法,并使用了建议的脚本:

EXEC msdb.dbo.sp_send_dbmail
     @profile_name = 'Your_Profile_Name',
     @recipients = 'Use a valid e-mail address',
     @body = 'The database mail configuration was completed successfully.',
     @subject = 'Automated Success Message';
GO

推荐阅读