我们有几个发送电子邮件的asp.net
个网络应用,MailMessage
对象配置了SMTP
服务器,用户名和密码。电子邮件发送没有问题。
在SSIS
包中,我添加了一个SMTP连接管理器,并配置了smtp服务器。我设置了UseWindowsAuthentication=True
,因为我看不到用户名/密码输入的位置。
当我从SQL Server Agent
运行包时,SSIS会正确发送电子邮件,因此显然不需要用户/密码。
那么SMTP包如何在没有用户凭据的情况下发送电子邮件? asp.net是否也不需要凭证?
我们都在同一公司网络下,我们使用Exchange Server
。
感谢。
答案 0 :(得分:3)
查看此link。
它解释了该软件包正在使用Sql Server Agent帐户连接到主机。 此外,SMTP连接管理器仅支持匿名身份验证和Windows身份验证。它不支持基本身份验证 - 如documentation中所述。
答案 1 :(得分:3)
Alan Gaylor的回答对我不起作用,但是在脚本任务(而不是电子邮件任务)中执行以下操作有效:
using System.Diagnostics;
using System.Net;
using System.Net.Mail;
public void Main()
{
string UserName = Dts.Variables["UserName"].Value.ToString();
string Password = Dts.Variables["Password"].Value.ToString();
string EmailRecipient = Dts.Variables["EmailRecipient"].Value.ToString();
string EmailSender = Dts.Variables["EmailSender"].Value.ToString();
string SMTPEndPoint = Dts.Variables["SMTPEndPoint"].Value.ToString();
Int32.TryParse(Dts.Variables["SMTPPort"].Value.ToString(), out int SMTPPort);
string MessageSubject = Dts.Variables["MessageSubject"].Value.ToString();
string MessageBody = Dts.Variables["MessageBody"].Value.ToString();
MailMessage msg = new MailMessage();
msg.To.Add(new MailAddress(EmailRecipient));
msg.From = new MailAddress(EmailSender);
msg.Subject = MessageSubject;
msg.Body = MessageBody +
"\n" +
"\n" +
"DISCLAIMER: The information contained in this transmission may contain privileged and confidential information. " +
"It is intended only for the use of the person(s) named above.If you are not the intended recipient, " +
"you are hereby notified that any review, dissemination, distribution or duplication of this communication " +
"is strictly prohibited. If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message.";
SmtpClient client = new SmtpClient(SMTPEndPoint, SMTPPort)
{
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
Credentials = new NetworkCredential(UserName, Password)
};
try
{
client.Send(msg);
}
catch (Exception e)
{
Debug.WriteLine(e);
}
Dts.TaskResult = (int)ScriptResults.Success;
}
答案 2 :(得分:2)
使用参数化的ConnectionString属性创建一个SMTP连接管理器,该属性包含一个包含smtp用户和密码的字符串。
答案 3 :(得分:0)