【问题标题】:The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required.?SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应是:5.5.1 Authentication Required。?
【发布时间】:2015-05-01 21:55:47
【问题描述】:

我在这个问题上找到了很多答案,但仍然没有解决我的问题。我正在使用此代码向用户发送帐户激活邮件。但我收到此错误“SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.5.1 需要身份验证。”

using (MailMessage mm = new MailMessage("sender@gmail.com", txtEmail.Text))
    {
        mm.Subject = "Account Activation";
        string body = "Hello " + txtUsername.Text.Trim() + ",";
body += "<br /><br />Please click the following link to activate    your   account";
        body += "<br /><a href = '" + Request.Url.AbsoluteUri.Replace("CS.aspx", "CS_Activation.aspx?ActivationCode=" + activationCode) + "'>Click here to activate your account.</a>";
        body += "<br /><br />Thanks";
        mm.Body = body;
        mm.IsBodyHtml = true;
        SmtpClient smtp = new SmtpClient();
        smtp.Host = "smtp.gmail.com";
        smtp.EnableSsl = true;
        NetworkCredential NetworkCred = new NetworkCredential("sender@gmail.com", "<password>");
        smtp.UseDefaultCredentials = true;
        smtp.Credentials = NetworkCred;
        smtp.Port = 587;
        smtp.Send(mm);
        //var client = new SmtpClient("smtp.gmail.com", 587)
        //{
        //    Credentials = new NetworkCredential("myusername@gmail.com", "mypwd"),
        //    EnableSsl = true
        //};
        //client.Send("myusername@gmail.com", "myusername@gmail.com", "test", "testbody");
    }

【问题讨论】:

  • 如果您要使用自己的凭据,则需要将 UseDefaultCredentials 设置为 false。

标签: asp.net email authentication smtp


【解决方案1】:

问题就像水一样,代码从上到下执行。您正在传递凭据,但同时将 UseDefaultCredentials 设置为 true。这导致了这个问题。大多数服务器需要身份验证,例如 EnableSsl 和凭据(用户名/密码组合)才能从其服务器发送电子邮件。

因此,解决方案是删除以下行,

smtp.UseDefaultCredentials = true;

然后代码将执行并发送电子邮件。

【讨论】:

  • 感谢您的回答。但实际上我只是输入了有效的 gmail 用户名和密码,它对我有用 =)
猜你喜欢
  • 2012-05-28
  • 2015-05-18
  • 2017-02-17
  • 2013-10-31
  • 2014-01-21
  • 2014-11-08
  • 2016-05-16
相关资源
最近更新 更多