使用Gmail发送电子邮件。错误:服务器响应为:5.5.1需要身份验证

时间:2015-04-30 02:56:18

标签: c# asp.net email

对不起,我看到很多关于此事的类似帖子,但从未找到解决我的问题,所以我决定发布。

我正在使用ASP.NET c#使用以下代码使用gmail以编程方式发送电子邮件。

 string EmailAddress = senderemail;
    MailMessage mailMessage = new MailMessage(EmailAddress, EmailAddress);
    mailMessage.Subject = "This is a test email";
    mailMessage.Body = "This is a test email. Please reply if you receive it.";

    SmtpClient smtpClient = new SmtpClient();
    smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
    smtpClient.EnableSsl = true;
    smtpClient.Host = "smtp.gmail.com";
    smtpClient.Port = 587;

    smtpClient.Credentials = new System.Net.NetworkCredential()
    {
        UserName = EmailAddress,
        Password = senderpassword
    };
    smtpClient.UseDefaultCredentials = false;
    smtpClient.Send(mailMessage);

我收到了像其他人一样的错误

错误:

  

SMTP服务器需要安全连接,否则客户端不需要   认证。服务器响应为:5.5.1需要身份验证。   了解更多信息。

GMAIL已经做了以下两项行动。

- 无安全应用:开启

-2步验证:关闭

我不在乎这个gmail帐户是安全还是什么。我不需要此帐户的任何安全性。我该怎么办?

9 个答案:

答案 0 :(得分:14)

注册Gmail并转到https://www.google.com/settings/security/lesssecureapps,您可以在其中查看设置。访问安全性较低的应用

关闭(默认)==>开启

添加此代码后,

  MailMessage mail = new MailMessage("fromm@gmail.com", "toaddress@gmail.com");
                mail.Subject = "TestEmailImportant";
                mail.Body = "This mail is to test if this program is working";

                SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", 587);

                smtpClient.Credentials = new System.Net.NetworkCredential()
                {
                    UserName = "XXXXXX@gmail.com",
                    Password = "YYYYYYYY"
                };

                smtpClient.EnableSsl = true;
                System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate(object s,
                        System.Security.Cryptography.X509Certificates.X509Certificate certificate,
                        System.Security.Cryptography.X509Certificates.X509Chain chain,
                        System.Net.Security.SslPolicyErrors sslPolicyErrors)
                {
                    return true;
                };

                smtpClient.Send(mail);

答案 1 :(得分:1)

当您尝试从不同时区/ IP /计算机登录时,通常会发生这种情况。生产服务器和您使用的邮件ID都位于不同的时区。选择任何一种解决方案:

  1. 通过远程访问登录到生产服务器,然后加入gmail 一旦你的凭据。他们会要求确认, 确认并注销。
  2. 或者

    1. 将gmail登录到您的本地计算机,请按此Link和 选择review this activity并采取适当的措施。

答案 2 :(得分:0)

我在我的机器上运行了这个代码,它可以运行。 可能是评论线不需要.....

MailMessage mailMessage = new MailMessage("From_User_Email", "To_Whom_Email");
        mailMessage.Subject = "This is a test email";
        mailMessage.Body = "This is a test email. Please reply if you receive it.";

        SmtpClient smtpClient = new SmtpClient();
        //smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
        smtpClient.EnableSsl = true;
        smtpClient.Host = "smtp.gmail.com";
        smtpClient.Port = 587;

        smtpClient.Credentials = new System.Net.NetworkCredential()
        {
            UserName = "From_User_Email",
            Password = "User_Password"
        };
        //smtpClient.UseDefaultCredentials = false;
        smtpClient.Send(mailMessage);

答案 3 :(得分:0)

请尝试以下代码:

UseDefaultCredentials = false;
Credentials = new NetworkCredential("xxx@gmail.com", "xxxpassword");

当您尝试从代码发送邮件时,您发现错误“SMTP服务器需要安全连接或客户端未经过身份验证。服务器响应为:5.5.1需要身份验证”,而不是由于这些案例经过精心解释here,请看看

同时选中阻止登录here,安全设备设置here

您也可以尝试以下代码:

 MailMessage mail = new MailMessage();
                SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");

                mail.From = new MailAddress("xxx@gmail.com");

                mail.To.Add("xxx@gmail.com");
                mail.Subject = "xxxxx ";
                mail.Body += " <html>";
                mail.Body += "<body>";
                mail.Body += "<table>";

                mail.Body += "<tr>";
                mail.Body += "<td>User Name : </td><td> Hai </td>";
                mail.Body += "</tr>";

                mail.Body += "<tr>";
                mail.Body += "<td>Password : </td><td>xxxxxx</td>";
                mail.Body += "</tr>";

                mail.Body += "</table>";
                mail.Body += "</body>";
                mail.Body += "</html>";

                mail.IsBodyHtml = true;



                SmtpServer.Port = 587;
                SmtpServer.Credentials = new      
                System.Net.NetworkCredential("xxx@gmail.com", "xxxpassword");
                SmtpServer.EnableSsl = true;

                SmtpServer.Send(mail);

由于

答案 4 :(得分:0)

使用浏览器登录以下gmail帐户并按照验证过程进行操作。您可能已经发送了大量电子邮件,并且该帐户已暂时被屏蔽。

答案 5 :(得分:0)

确保您拥有强密码。我遇到了gmail的问题,因为我的密码只有字母和数字。我改为使用大写和小写字母,数字和符号,现在它正在工作: “在密码中使用数字,符号以及大写和小写字母混合使得某人猜测您的密码更加困难。例如,带有数字,符号和大小写混合字母的八字符密码更难以猜测,因为它具有可能的组合数量是八个字符密码的30,000倍,只有小写字母。“ https://support.google.com/accounts/answer/32040?hl=en

答案 6 :(得分:0)

我的案例解决了这个解决方案6

提交以下一行:

smtpClient.UseDefaultCredentials = false;

如果不起作用,请尝试端口25而不是578。

https://productforums.google.com/forum/#!topic/gmail/w8hNo56tivE;context-place=topicsearchin/gmail/The $ $ 20SMTP $ 20server $ 20requires 20A $ $ 20secure $ 20connection $ 20or第二十条$ $ 20client $ 20was $ 20not 20authenticated。$ $第二十条$ 20server $ 20response $ 20was 3A $ 205.5.1 $ $ 20Authentication 20Required

答案 7 :(得分:0)

有时候,如果您之前没有从此PC登录,则只需要从此计算机登录gmail。 gmail会要求您验证并确认新PC。

答案 8 :(得分:0)