出于某种原因,既不是接受的答案,也没有其他工作为我“通过Gmail在。net发送电子邮件”。为什么它们不会起作用?

更新:我已经在另一个问题中尝试了所有的答案(接受的和其他的),但没有一个有效。

我只是想知道它是否适用于其他人,否则谷歌可能已经改变了一些东西(以前发生过)。

当我尝试使用SmtpDeliveryMethod的代码段时。网络,我很快收到一个SmtpException发送(消息)。信息是

SMTP服务器需要安全连接,否则客户端未经过身份验证。

服务器的回复是:

5.5.1认证要求在“<——说真的,它到此结束。

更新:

这是我很久以前问过的一个问题,公认的答案是我在不同的项目中使用过很多很多次的代码。

我采用了这篇文章和其他EmailSender项目中的一些想法,在Codeplex上创建了一个EmailSender项目。它是为可测试性而设计的,支持我最喜欢的SMTP服务,如GoDaddy和Gmail。


当前回答

更改您的gmail密码,再试一次,它应该工作之后。

不知道为什么,但每次你改变你的主机,你必须改变你的密码。

其他回答

我用的是企业VPN连接。这就是为什么我不能从我的应用程序发送电子邮件的原因。如果我断开VPN,它就可以工作。

Dim SMTPClientObj As New Net.Mail.SmtpClient
SMTPClientObj.UseDefaultCredentials = False
SMTPClientObj.Credentials = New System.Net.NetworkCredential("myusername@gmail.com", "mypwd")
SMTPClientObj.Host = "smtp.gmail.com"
SMTPClientObj.Port = 587
SMTPClientObj.EnableSsl = True
SMTPClientObj.Send("myusername@gmail.com","yourusername@gmail.com","test","testbody")

如果您得到诸如“SMTP服务器需要安全连接或客户端未经过身份验证。服务器的响应是:5.5.1需要身份验证。要了解更多信息,请访问“在此之前,确保行SMTPClientObj。UseDefaultCredentials = False,这一行应该在smtpclientb . credentials之前。

我确实尝试将这两行反向切换,并返回5.5.1 Authentication Required错误。

哦……令人惊奇的… 首先,我不知道为什么不能发电子邮件。 但是当我改变了这两行的顺序后,它可以很好地工作。

//(1)
client.UseDefaultCredentials = true;
//(2)
client.Credentials = new System.Net.NetworkCredential("username@gmail.com", "password");

我也尝试了许多解决方案,但做一些改变,它会起作用

host = smtp.gmail.com
port = 587
username = email@gmail.com
password = password
enabledssl = true

与smtpclient上述参数工作在gmail

我解决了这个问题。显然,该消息用于多种错误类型。 我的问题是我已经达到了发送500封邮件的最大值。

登录到帐户并手动尝试发送邮件。如果已达到限制,它将通知您