出于某种原因,既不是接受的答案,也没有其他工作为我“通过Gmail在。net发送电子邮件”。为什么它们不会起作用?
更新:我已经在另一个问题中尝试了所有的答案(接受的和其他的),但没有一个有效。
我只是想知道它是否适用于其他人,否则谷歌可能已经改变了一些东西(以前发生过)。
当我尝试使用SmtpDeliveryMethod的代码段时。网络,我很快收到一个SmtpException发送(消息)。信息是
SMTP服务器需要安全连接,否则客户端未经过身份验证。
服务器的回复是:
5.5.1认证要求在“<——说真的,它到此结束。
更新:
这是我很久以前问过的一个问题,公认的答案是我在不同的项目中使用过很多很多次的代码。
我采用了这篇文章和其他EmailSender项目中的一些想法,在Codeplex上创建了一个EmailSender项目。它是为可测试性而设计的,支持我最喜欢的SMTP服务,如GoDaddy和Gmail。
这段代码适用于我,也允许在gmail访问不安全的应用程序,并在2个步骤中删除身份验证:
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(MailAddress, Password)
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错误。