我怎么也搞不懂为什么这不管用。
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);
我得到了:
服务器需要安全连接,或者客户端未经过身份验证。服务器响应为: 5.5.1需要身份验证。
我只是将EnableSsl指定为true,所以这不应该是安全连接方面的问题。
我从localhost运行这个程序。是的,我输入的用户名和密码(我的gmail帐户凭证)是100%正确的。
发布于 2014-08-21 04:44:59
我知道这是个老话题但是..。谷歌已经改变了他们的安全设置。
我一直在为所有的答案而苦苦挣扎,直到我用一封来自谷歌的邮件检查了我的电子邮件,说“我们最近阻止了一次登录你的谷歌账户的尝试”。
这将我带到了这个页面:Google Account Security
在“访问安全性较低的应用程序”部分下,您可以启用从其他设备/应用程序访问您的帐户...例如您的C#应用程序。
请注意,不再有“特定于应用程序”部分。
希望这对某些人有帮助。我刚刚失去了生命中的30分钟...
发布于 2012-07-17 06:18:57
如果登录信息是100%正确的,您需要设置UseDefaultCredentials = false
first,然后设置要使用Credentials = new NetworkCredential("myemail@gmail.com", "myGmailPasswordHere")
的凭据。
如果先设置凭据,则在设置UseDefaultCredentials = false
时,Credentials
属性将设置为null
。
这是连线的,但它发生在我身上。
在调用smtp.Send(message);
之前,调试代码并检查Credentials
属性是否为空。如果是这样,那么尝试颠倒顺序。看起来它的顺序是正确的,但是如果它是空的,就不要使用内联初始化。
希望能有所帮助。
EDIT:如果使用两步验证,请确保使用的是App Specific password
发布于 2012-02-02 22:52:28
看起来Gmail需要特定于应用程序的密码(而不是你的主密码)。
请查看以下内容:http://support.google.com/mail/bin/answer.py?hl=en&answer=1173270
最近我也遇到了同样的问题。
https://stackoverflow.com/questions/9104645
复制相似问题