无法通过MailMessage和smtpClient身份验证到Gmail smtp

Pos*_*Guy 19 c# gmail smtpclient

我无法弄清楚为什么这不起作用的生活

SmtpClient smtp = new SmtpClient
{
    Host = "smtp.gmail.com",
    Port = 587,
    UseDefaultCredentials = false,
    DeliveryMethod = SmtpDeliveryMethod.Network,
    Credentials = new NetworkCredential("myemail@gmail.com", "myGmailPasswordHere"),
    EnableSsl = true,
    Timeout = 10000
};


smtp.Send(mail);
Run Code Online (Sandbox Code Playgroud)

我明白了:

SMTP服务器需要安全连接或客户端未经过身份验证.服务器响应为:5.5.1需要身份验证.

我刚刚将EnableSsl指定为true,因此在安全连接方面不应该是问题.

我是从localhost运行的.是的,我输入auth(我的gmail帐户凭据)的用户名和密码是100%正确的.

Tin*_*iny 38

我知道这是一个古老的话题,但是...... Google已经改变了他们的安全设置.

在我使用Google发来的邮件检查我的电子邮件之前,我一直在努力解决所有问题,并说"我们最近阻止了对您Google帐户的登录尝试".

这导致我进入了这个页面: Google帐户安全

在"访问安全性较低的应用"部分下,您可以启用从其他设备/应用程序访问您的帐户...例如您的C#应用​​程序.

请注意,不再是"特定于应用程序"部分.

希望这有助于某人......我只是失去了30分钟的生命......


edt*_*eke 21

如果登录信息是100%正确的,你需要设置UseDefaultCredentials = false 第一,然后设置要使用的凭据Credentials = new NetworkCredential("myemail@gmail.com", "myGmailPasswordHere").

如果首先设置凭据,则设置UseDefaultCredentials = falseCredentials属性将使属性为null.

这是有线的,但它发生在我身上.

Credentials在调用之前调试代码并检查属性是否为null smtp.Send(message);.如果是这样,那么尝试颠倒顺序.看起来你的顺序是正确的,但是如果它是null,则不要使用内联初始化.

希望能帮助到你.

编辑:如果您使用两步验证,请确保您使用的是专用密码

  • 这对我有用......整个世界都放弃了!!!! 非常感谢!!! (4认同)

Ale*_*kin 11

看起来Gmail需要特定于应用程序的密码(而不是您的主密码).

请查看以下内容:http://support.google.com/mail/bin/answer.py?hl = zh-CN&answer = 1173270

我最近遇到了同样的问题.

  • 很多,这对我有用.使用[here](http://stackoverflow.com/a/489594/271992)的代码库,按照[此建议](http://stackoverflow.com/a/11513412/271992)以及我的应用程序生成[两步验证](http://www.google.com/2step)Google密码(*不是*我的常规Gmail密码),我能够从C#测试客户端发送电子邮件.我正在使用我的个人Gmail帐户在我的本地桌面上进行开发/测试,忘了我已经启用了Gmail的[两步验证](http://www.google.com/2step)...所以这是我的2小时生活我永远不会回来!:) (3认同)

cod*_*der 0

<mailSettings>
            <smtp from="youremail@gmail.com">
                <network host="smtp.gmail.com" password="yourpassword" port="587" userName="username"/>
            </smtp>
</mailSettings>
Run Code Online (Sandbox Code Playgroud)

smtp.Credentials = Credentials编辑:尝试在此之后添加此行

Credentials = new NetworkCredential("myemail@gmail.com", "myGmailPasswordHere"),