C# Gmail错误:SMTP服务器需要安全连接,或者客户端未通过身份验证。服务器响应为:需要5.5.1身份验证
我使用以下代码发送电子邮件。该代码在我的本地计算机中正常工作。但在生产服务器上,我收到了错误消息C# Gmail错误:SMTP服务器需要安全连接,或者客户端未通过身份验证。服务器响应为:需要5.5.1身份验证,c#,.net,smtp,gmail,C#,.net,Smtp,Gmail,我使用以下代码发送电子邮件。该代码在我的本地计算机中正常工作。但在生产服务器上,我收到了错误消息 var fromAddress = new MailAddress("mymailid@gmail.com"); var fromPassword = "xxxxxx"; var toAddress = new MailAddress("yourmailid@yourdoamain.com"); string subject = "subject"; string body = "body";
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 A/c上,我从生产服务器运行代码后收到了以下电子邮件
嗨
最近有人使用你的密码试图登录到你的Google
账户mymailid@gmail.com. 此人正在使用这样的应用程序
作为电子邮件、客户端或移动设备
我们阻止了登录企图,以防这是一名劫机者试图登录
访问您的帐户。请查看登录尝试的详细信息:
2014年1月3日星期五13:56:08 UTC IP地址:xxx.xx.xx.xxx
地点:美国宾夕法尼亚州费城,费城
如果您没有识别出此登录尝试,其他人可能会
正在尝试访问您的帐户。您应该登录到您的帐户并
立即重置密码
重置密码
如果这是您,并且您在访问您的帐户时遇到问题,
完成中列出的故障排除步骤
你诚挚的,谷歌账户团队
这通常发生在您尝试从不同时区或IP地址的计算机登录时。您的生产服务器和您使用的邮件id都位于不同的时区。选择以下两种解决方案之一: 1) 通过远程访问登录到生产服务器,并使用您的凭据登录gmail一次。他们将要求确认,确认并注销
或者2)登录gmail到您的本地计算机,按照此操作,选择并采取适当的措施。我确实研究了很多想法,唯一的解决方案是这种方式(与不同的电子邮件提供商合作):
下面是我的代码。我也有同样的错误,但问题是我给我的密码错了。下面的代码会很好地工作。试试看
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);
MailMessage mail=newmailmessage();
SmtpClient SmtpServer=新的SmtpClient(“smtp.gmail.com”);
mail.From=新邮件地址(“fromaddress@gmail.com");
mail.To.Add(“toaddress1@gmail.com");
mail.To.Add(“toaddress2@gmail.com");
mail.Subject=“密码恢复”;
mail.Body+=“”;
mail.Body+=“”;
mail.Body+=“”;
mail.Body+=“”;
mail.Body+=“用户名:HAi”;
mail.Body+=“”;
mail.Body+=“”;
mail.Body+=“密码:aaaaaaaa”;
mail.Body+=“”;
mail.Body+=“”;
mail.Body+=“”;
mail.Body+=“”;
mail.IsBodyHtml=true;
SmtpServer.Port=587;
SmtpServer.Credentials=新系统.Net.NetworkCredential(“sendfrommaildress.com”,“password”);
SmtpServer.EnableSsl=true;
发送(邮件);
你可以在中查阅,我也遇到过同样的问题。当您打开两步验证(MFA)时会发生这种情况。
只需关闭两步验证,您的问题就会得到解决。只需按照谷歌电子邮件中的步骤操作,并启用不太安全的应用程序 当您尝试从代码发送邮件时,发现错误“SMTP服务器需要安全连接或客户端未经过身份验证。服务器响应为:5.5.1需要身份验证”,则可能会由于以下情况而发生错误。 案例1:密码错误时 案例2:当您尝试从某个应用程序登录时 案例3:当您尝试从时区/域/计算机以外的域登录时 (从代码发送邮件时,大多数情况下都是这种情况) 每个问题都有一个解决方案 案例1的解决方案:输入正确的密码 案例2的解决方案1:转到以下链接的安全设置并启用不太安全的应用程序。这样您就可以从所有应用程序登录 案例2的解决方案2:(请参阅)启用双因素身份验证(也称为两步验证),然后生成特定于应用程序的密码。使用新生成的密码通过SMTP进行身份验证 案例3的解决方案1:(这可能会有帮助)您需要查看活动。但是,由于最新的安全标准,审查该活动将毫无帮助。该链接将毫无用处。所以试试下面的例子 案例3的解决方案2:如果您已将代码托管在生产服务器上的某个位置,并且您可以访问生产服务器,请与生产服务器建立远程桌面连接,并尝试从生产服务器的浏览器登录一次。 这将添加Exceptioon登录到谷歌,您将被允许从代码登录 但是如果您没有访问生产服务器的权限该怎么办。 尝试解决方案3 案例3的解决方案3:您必须为您的google帐户启用从其他时区/ip登录 要执行此操作,请单击链接并单击“继续”按钮以允许访问
就这样。干得好。现在,您可以从任何一台计算机和通过任何应用程序登录到您的google帐户。尝试更改主机,这是新的,我在配置mozilla thunderbird时得到了这个
Host = "smtp.googlemail.com"
这对我来说很有效这是一个安全问题,默认情况下,Gmail会阻止自定义应用程序访问您的电子邮件帐户。您可以将其设置为接受应用程序的登录 登录到您的电子邮件后 这将带您进入下一页
嗨,我也有同样的问题 我为解决这个问题所做的一切。就是打开不太安全的应用程序。 A.
Host = "smtp.googlemail.com"
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");
client.TargetName = "STARTTLS/smtp.gmail.com";
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
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
}
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
}
public static void SendEmail(string emailTo, string subject, string body)
{
var client = new SmtpClient("smtp.gmail.com", 587)
{
Credentials = new NetworkCredential("youremail@gmail.com", "secretpassword"),
EnableSsl = true
};
client.Send("youremail@gmail.com", emailTo, subject, body);
}
var fromAddress = new MailAddress(asd@asd.com, "From Name");
var toAddress = new MailAddress("tosend@asd.com", "To Name");
const string subject = "Subject";
const string body = "Body";
var smtp = new SmtpClient
{
Host = "aspmx.l.google.com",
Port = 25,
EnableSsl = false
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}