SSIS发送邮件任务失败

时间:2018-04-02 05:09:59

标签: ssis

以下是我执行包含发送邮件任务的简单包时遇到的错误。我已经使用server-smtp.office365.com配置了SMTP连接管理器,并检查了windows身份验证和ssl选项。

由于

  

错误:发送邮件任务中的0xC002F304,发送邮件任务:发生错误   出现以下错误消息:“ SMTP服务器需要安全   连接或客户端未经过身份验证。服务器响应   是:5.7.57 SMTP;未对客户端进行身份验证以发送匿名邮件   MAIL来自[BMXPR01CA0031.INDPRD01.PROD.OUTLOOK.COM] “。

2 个答案:

答案 0 :(得分:2)

这是一个已知问题。查看this msdn link。它在答案中说明了以下内容:

  

SSIS中的SMTP任务仅支持Windows身份验证和   端口号无法更改。对于使用非Windows的SMTP服务器   身份验证,我们可以在Script Task中使用SmtpClient类发送   电子邮件

这就是为什么通过office365发送电子邮件失败的原因。

要使用office365,您可以查找与SSIS集成的第三方插件,也可以使用下面的script task

using System.Net.Mail;
using System.Net;
.
.
.
public void Main()
{
 MailMessage mail = new MailMessage("<from email address>", "<to email address>");
 mail.Body = "ssis sample email body";
 mail.Subject = "ssis sample email subject";

 //mail.Attachments.Add(new Attachment(AttachmentDiscardContratti));
 //mail.Attachments.Add(new Attachment(AttachmentDiscardOrdini));

   SmtpClient client = new SmtpClient("smtp.office365.com", 587);
   client.EnableSsl = true;
   client.UseDefaultCredentials = false;
   client.Credentials = new NetworkCredential("<login email>", "<login password>");
   client.Send(mail);

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

ps:交换,因为我不确定哪一个首先出现。

另一个代码示例in this SO answer(未经我测试)

答案 1 :(得分:0)

这可以使用execute sql task轻松实现。首先创建一个存储过程并在新创建的过程中执行sp_send_dbmail。这个sp需要很多参数..从ssis传递这些参数的值,你会很好。请在Google上搜索有关此程序的更多信息。你甚至可以在这个程序上发送附件