【问题标题】:Can't send mail using SmtpClient无法使用 SmtpClient 发送邮件
【发布时间】:2013-12-04 05:41:59
【问题描述】:

我想使用 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 客户端未通过身份验证

我确定用户名和密码是正确的。我的代码有问题吗? 谢谢。

【问题讨论】:

  • 您是否尝试在 NetworkCredential 的第三个参数中包含域?

标签: c# .net smtp


【解决方案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 out :
在 Exchange 管理控制台的“服务器配置”节点下,选择“集线器传输”和服务器名称。在接收连接器窗格中,打开任一接收连接器(我的默认安装创建了 2 个),或者您可以为 TFS 创建一个新的连接器(我也尝试过,它有效)。对于这些连接器中的任何一个,请打开“属性”并在“权限组”选项卡上确保选择匿名用户(默认情况下未选中)。

或

您也可以通过初始化SmtpClient 来尝试this,如下所示:

SmtpClient smtp = new SmtpClient("127.0.0.1");

【讨论】:

  • 与问题中的代码基本相同,那么这如何回答如何解决服务器返回 5.7.1 Client was not authenticated 的问题?
  • 是的,和mime差不多。 @Arshad:嗨,朋友,这可能会导致这个异常?
  • @hoangmeo325,检查更新的答案
【解决方案2】:

服务器响应 5.7.1 客户端未通过身份验证,但前提是您未将 UseDefaultCredentials 设置为 true。这表明您使用的NetworkCredential实际上是错误的。

用户名或密码错误,或者您可能需要指定域?您可以使用另一个构造函数来指定域:

new NetworkCredential("MyUserName", "MyPassword", "MyDomain");

或者您指定的用户可能没有在 SMTP 服务器上发送邮件的必要权限,但我希望得到另一个服务器响应。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-11
  • 1970-01-01
  • 2010-11-21
  • 1970-01-01
  • 1970-01-01
  • 2020-03-20
  • 1970-01-01
相关资源
最近更新 更多