Gmail错误:SMTP服务器需要安全连接或客户端未通过身份validation。 服务器响应是:5.5.1需要身份validation

我正在使用以下代码发送电子邮件。 该代码在我的本地计算机上正常工作。 但在生产服务器上,我收到错误消息

var fromAddress = new MailAddress("mymailid@gmail.com"); var fromPassword = "xxxxxx"; var toAddress = new MailAddress("yourmailid@yourdoamain.com"); string subject = "subject"; string body = "body"; System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient { Host = "smtp.gmail.com", Port = 587, EnableSsl = true, DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network, UseDefaultCredentials = false, Credentials = new NetworkCredential(fromAddress.Address, fromPassword) }; using (var message = new MailMessage(fromAddress, toAddress) { Subject = subject, Body = body }) smtp.Send(message); 

在我的Gmail帐户上,我从生产服务器运行代码后收到以下电子邮件

嗨,

最近有人使用您的密码尝试login到您的Google帐户mymailid@gmail.com。 此人正在使用诸如电子邮件,客户端或移动设备之类的应用程序。

如果这是一个劫机者试图访问您的帐户,我们阻止了login尝试。 请查看login尝试的详细信息:

2014年1月3日星期五13:56:08 UTC时间IP地址:xxx.xx.xx.xxx(abcd.net。)地点:美国宾夕法尼亚州费城费城宾夕法尼亚州

如果您不认识这个login尝试,其他人可能会尝试访问您的帐户。 您应该login到您的帐户并立即重置您的密码。

重设密码

如果这是您,并且您无法访问自己的帐户,请完成http://support.google.com/mail?p=client_login上列出的问题排查步骤

您诚挚的Google帐户小组

当您尝试从不同的时区或IP地址计算机login时,通常会发生这种情况。 您的生产服务器和您使用的邮件标识都位于不同的时区。 select任何一种解决scheme:

1)通过远程访问login到生产服务器,使用您的凭据login到gmail。 他们会要求确认,确认并注销。

或2)logingmail到您的本地计算机,按照此链接并select查看此活动并采取适当的措施。

当您尝试从代码发送邮件时,发现错误“SMTP服务器需要安全连接或客户端未通过身份validation,服务器响应为:5.5.1身份validation”,比以下情况可能会发生错误。

情况1:密码错误时

情况2:当你尝试从一些应用程序login

情况3:当您尝试从时区/域/计算机以外的域中login时(从代码发送邮件时,大多数情况下都是这种情况)

有每个解决scheme

案例1的解决scheme:input正确的密码。

案例2的解决scheme1 :访问后续链接https://www.google.com/settings/security/lesssecureapps中的;安全设置,启用安全性较低的应用。 这样你就可以从所有的应用程序login。

情况2的解决scheme2 :(请参阅https://stackoverflow.com/a/9572958/52277 )启用双因素身份validation(又称为两步validation),然后生成应用程序专用密码。 使用新生成的密码通过SMTP进行身份validation。

案例3的解决scheme1 ​​:(这可能会有所帮助)您需要查看活动。 但是由于最新的安全标准,检查活动将不会有帮助,因此链接将不会有用。 所以请尝试下面的情况。

案例3的解决scheme2 :如果您已将代码托pipe在生产服务器上的某个位置,并且您有权访问生产服务器,则需要远程桌面连接到生产服务器,并尝试从生产服务器的浏览器login一次。 这将添加excletioonlogin到谷歌,你将被允许login代码。

但是如果你没有权限访问生产服务器呢? 尝试解决scheme3

案例3的解决scheme3:您必须启用从其他时区/ IP为您的谷歌帐户login。

要做到这一点,请按照链接https://g.co/allowaccess,;并允许通过点击继续button进行访问。

就是这样。 干得好。 现在,您将可以从任何计算机和任何应用程序login到您的谷歌帐户。

这是一个安全问题,默认情况下,Gmail会阻止自定义应用程序访问您的电子邮件帐户。 您可以将其设置为接受来自应用程序的login。

login到您的电子邮件后, 点击这里

这将带你到下一页

更安全的应用程序页面

嗨,我有同样的问题,

我已经做了什么来解决它。 是打开不太安全的应用程序。 连接到我的Gmail帐户后。 我input了这个链接: https : //www.google.com/settings/security/lesssecureapps

然后我打开安全的应用程序,它的工作。 上面已经说过了

今天花了几个小时尝试每一个解决scheme,我仍然无法克服这个确切的错误。 我已经用这种方式多次使用Gmail,所以我知道这是愚蠢的,但我没有解决这个问题。 我终于偶然发现了我的情况,以为我会分享。

首先,上面的大部分答案也是必需的,但就我而言,在创buildSmtpClient类时,只需简单地定义代码即可。

在下面的第一个代码片段中,注意“Credentials = creds”行的位置。 这个实现将会产生这个问题中引用的错误,即使你有一切正确的设置。

 System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient { Host = Emailer.Host, Port = Emailer.Port, Credentials = creds, EnableSsl = Emailer.RequireSSL, UseDefaultCredentials = false, DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network } 

但是,如果您将凭证设置程序调用移动到底部,则会发送电子邮件而不会出错。 我没有改变周围的代码…即…用户名/密码等显然,无论是EnableSSL,UseDefaultCredentials,或DeliveryMethod是依赖于证书被设置为第一….我没有testing所有想弄清楚是哪一个。

 System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient { Host = Emailer.Host, Port = Emailer.Port, EnableSsl = Emailer.RequireSSL, UseDefaultCredentials = false, DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network, Credentials = creds } 

希望这有助于在未来挽救别人一些头痛的问题。

只需按照谷歌电子邮件中的步骤,启用不太安全的应用程序。

我面临同样的问题。 当您打开2步validation(MFA)时,会发生这种情况。 只需closures2步validation,你的问题应该得到解决。

下面是我的代码。我也有同样的错误,但问题是,我给我的密码wrong.The下面的代码将完美的工作..尝试

  MailMessage mail = new MailMessage(); SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com"); mail.From = new MailAddress("fromaddress@gmail.com"); mail.To.Add("toaddress1@gmail.com"); mail.To.Add("toaddress2@gmail.com"); mail.Subject = "Password Recovery "; 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>aaaaaaaaaa</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("sendfrommailaddress.com", "password"); SmtpServer.EnableSsl = true; SmtpServer.Send(mail); 

你可以参考我的博客

什么对我来说是激活安全性较低的应用程序的选项(我正在使用VB.NET)

 Public Shared Sub enviaDB(ByRef body As String, ByRef file_location As String) Dim mail As New MailMessage() Dim SmtpServer As New SmtpClient("smtp.gmail.com") mail.From = New MailAddress("from@gmail.com") mail.[To].Add("to@gmail.com") mail.Subject = "subject" mail.Body = body Dim attachment As System.Net.Mail.Attachment attachment = New System.Net.Mail.Attachment(file_location) mail.Attachments.Add(attachment) SmtpServer.Port = 587 SmtpServer.Credentials = New System.Net.NetworkCredential("user", "password") SmtpServer.EnableSsl = True SmtpServer.Send(mail) End Sub 

所以login到您的帐户,然后去google.com/settings/security/lesssecureapps

对于部署到Microsoft Azure的应用程序,我遇到了同样的问题。

SmtpException:SMTP服务器需要安全连接,或者客户端未通过身份validation。 服务器响应是:5.5.1需要身份validation。

首先,我在下一页(以Gmail用户身份login)上批准了所有未知设备(源自爱尔兰的一些IP地址): https : //security.google.com/settings/u/1/security/secureaccount

我为客户端使用了以下设置:

 var client = new SmtpClient("smtp.gmail.com"); client.Port = 587; client.EnableSsl = true; client.UseDefaultCredentials = false; client.Credentials = new NetworkCredential("my_user_name@gmail.com", "my_password"); 

它开始工作后,我在smtp客户端上设置以下属性:

 client.TargetName = "STARTTLS/smtp.gmail.com"; 

我真的看了很多想法,唯一的解决方法就是这样(与不同的电子邮件提供商一起工作):

  try { ViewProgressbar("Try to connect mail-server...", progressBar1.Value = 20); string host = dsProvider.Rows[y]["POP_hostOut"].ToString(); int port = int.Parse(dsProvider.Rows[y]["POP_portOut"].ToString()); //587 string[] email = von1.Split('@'); string userName = (dsProvider.Rows[y]["login"].ToString() == "email[0]@email[1]")? email[0]+"@"+email[1] : email[0]; string password = layer.getUserPassword(listSender.SelectedValue.ToString()); SmtpClient client = new SmtpClient(host, port); client.DeliveryMethod = SmtpDeliveryMethod.Network; client.UseDefaultCredentials = false; //A idea from MSDN but it not works. You got the "The server response was: 5.5.1 Authentication Required." //System.Net.NetworkCredential myCreds = new System.Net.NetworkCredential(userName, password, host); //System.Net.CredentialCache cache = new System.Net.CredentialCache(); //cache.Add(host, port, "NTLM", myCreds); ///cache.GetCredential(host, port, "NTLM"); //NTLM client.Credentials = new System.Net.NetworkCredential(userName, password); client.Host = host; client.Port = port; client.EnableSsl = true; client.Send(message); ViewProgressbar(); } catch (SmtpException ex)... 

我是一个商业用户的谷歌应用程序,我花了最后几个小时处理这个,即使在所有正确的设置(smtp,端口,enableSSL等)之后。 这是什么对我和尝试发送电子邮件时抛出5.5.1错误的网站:

  1. login到您的admin.google.com
  2. 点击SECURITY < – 如果这个不可见,那么点击“MORE CONTROLS”,然后从列表中添加它
  3. 点击基本设置
  4. 滚动到“基本设置”框的底部,点击链接:“转到安全性较低的应用程序的设置”
  5. select选项#3:对所有用户强制访问不太安全的应用程序(不推荐)
  6. 按下窗口底部的SAVE(保存)

这样做后,我的电子邮件表格再次工作。 祝你好运!

您可能需要从gmail创build/生成特定的APP密码。 你的应用程序或脚本将使用这个新的密码,而不是你的普通密码。 您的普通密码仍然可以正常工作。

这对我来说是什么。 我仍然使用相同的电子邮件帐户,但必须生成一个新的应用程序特定的密码。

https://support.google.com/accounts/answer/185833?hl=en

屏幕截图

基本上你可以在这里: https : //security.google.com/settings/security/apppasswords

我尝试了所有的build议,从启用不太安全的应用程序,尝试端口587 …没有任何工作。 最后我刚刚注释掉UseDefaultCredentials = false这一行。 一切工作,如果我没有触摸该布尔值。

只要打开或Gmail的设置。 看下面给出的图像:

在这里输入图像描述

我使用了上面提到的所有解决scheme,但是最终只有在启用了Gmail设置中的IMAP访问之后才起作用链接到在Gmail设置中启用IMAP访问

当然,其他解决scheme中的要点也是必需的。

尝试改变主机,这是新的,我有这个configurationMozilla的雷鸟

 Host = "smtp.googlemail.com" 

为我工作