我想使用SmtpClient类发送邮件,但它不起作用。 代码:
SmtpClient smtpClient = new SmtpClient();
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = new System.Net.NetworkCredential(obMailSetting.UserName, obMailSetting.Password);
smtpClient.Host = obMailSetting.HostMail;
smtpClient.Port = obMailSetting.Port;
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.EnableSsl = obMailSetting.Connect_Security;//true
//smtpClient.UseDefaultCredentials = true;//It would work if i uncomment this line
smtpClient.Send(email);
它抛出异常:
SMTP服务器需要安全连接,或者客户端未经过身份验证。服务器响应为:5.7.1客户端未经过身份验证
我确定用户名和密码是正确的。我的代码有问题吗? 感谢。
答案 0 :(得分:1)
你可以试试这个:
MailMessage mail = new MailMessage();
mail.Subject = "Your Subject";
mail.From = new MailAddress("senderMailAddress");
mail.To.Add("ReceiverMailAddress");
mail.Body = "Hello! your mail content goes here...";
mail.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
smtp.EnableSsl = true;
NetworkCredential netCre =
new NetworkCredential("SenderMailAddress","SenderPassword" );
smtp.Credentials = netCre;
try
{
smtp.Send(mail);
}
catch (Exception ex)
{
// Handle exception here
}
您可以尝试this:
在Exchange管理控制台的“服务器配置”节点下,选择“集线器传输”和服务器的名称。在“接收连接器”窗格中,打开任一个Recive连接器(我的默认安装创建2),或者您可以为TFS创建一个新的连接器(我也试过这个并且它工作正常)。对于任何这些连接器,请打开“属性”,然后在“权限组”选项卡上确保选中“匿名用户”(默认情况下不是这样)。
或者
您也可以按以下方式初始化SmtpClient
来尝试this:
SmtpClient smtp = new SmtpClient("127.0.0.1");
答案 1 :(得分:1)
服务器响应 5.7.1客户端未经过身份验证,但前提是您未将UseDefaultCredentials
设置为true
。这表明您使用的NetworkCredential
实际上是错误的。
用户名或密码是错误的还是您需要指定域名?您可以使用其他构造函数来指定域:
new NetworkCredential("MyUserName", "MyPassword", "MyDomain");
或者您指定的用户可能没有必要的权限在SMTP服务器上发送邮件,但我希望其他服务器响应。