Asp.net SMTP服务器需要安全连接,或者客户端未通过身份验证。服务器响应为:需要5.5.1身份验证。?

Asp.net SMTP服务器需要安全连接,或者客户端未通过身份验证。服务器响应为:需要5.5.1身份验证。?,asp.net,email,authentication,smtp,Asp.net,Email,Authentication,Smtp,我在这个问题上找到了很多答案,但仍然没有解决我的问题。我正在使用此代码向用户发送帐户激活邮件。但我得到这个错误SMTP服务器需要一个安全连接或客户端未经身份验证。服务器响应为:需要5.5.1身份验证 using (MailMessage mm = new MailMessage("sender@gmail.com", txtEmail.Text)) { mm.Subject = "Account Activation"; string body = "He

我在这个问题上找到了很多答案,但仍然没有解决我的问题。我正在使用此代码向用户发送帐户激活邮件。但我得到这个错误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设置为true。这导致了这个问题。大多数服务器都需要身份验证,例如启用SSL和凭据用户名/密码组合,以便从其服务器发送电子邮件

所以,解决办法是去掉下面这一行

smtp.UseDefaultCredentials = true;

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

如果您要使用自己的凭据,则需要将UseDefaultCredentials设置为false。谢谢您的回答。但实际上,我只是输入了有效的gmail用户名和密码,它对我有效=