以下是我执行包含发送邮件任务的简单包时遇到的错误。我已经使用server-smtp.office365.com配置了SMTP连接管理器,并检查了windows身份验证和ssl选项。
由于
错误:发送邮件任务中的0xC002F304,发送邮件任务:发生错误 出现以下错误消息:“ SMTP服务器需要安全 连接或客户端未经过身份验证。服务器响应 是:5.7.57 SMTP;未对客户端进行身份验证以发送匿名邮件 MAIL来自[BMXPR01CA0031.INDPRD01.PROD.OUTLOOK.COM] “。
答案 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上搜索有关此程序的更多信息。你甚至可以在这个程序上发送附件