Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Gmail错误:SMTP服务器需要安全连接,或者客户端未通过身份验证。服务器响应为:需要5.5.1身份验证_C#_.net_Smtp_Gmail - Fatal编程技术网

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);
}