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

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

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

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

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

服务器的回复是:

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

更新:

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

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


当前回答

如果没有其他工作为您这里,您可能需要允许访问您的gmail帐户从第三方应用程序。这是我的问题。要允许访问,请执行以下操作:

登录您的gmail帐户。 访问此页面https://accounts.google.com/DisplayUnlockCaptcha并点击按钮允许访问。 访问此页面https://www.google.com/settings/security/lesssecureapps并启用不太安全的应用程序。

这对我有用,希望对其他人也有用!

其他回答

问题不是通过gmail发送的技术能力问题。这在大多数情况下都适用。如果你不能让机器发送,通常是由于机器没有经过至少一次人工控制的验证。

大多数用户面临的问题是,谷歌总是决定更改出站限制。您应该始终在解决方案中添加防御性代码。如果你开始看到错误,放慢你的发送速度,只是停止发送一段时间。如果您继续尝试发送谷歌,有时会在您再次发送之前增加额外的延迟时间。

在我目前的系统中,我所做的是在每条消息之间发送1.5秒的延迟。如果我发现任何错误,停止5分钟,然后重新开始。这通常是有效的,并且允许您发送到帐户的限制(最后我检查了它是每天2000个高级客户登录)。

我不确定这需要哪个.NET版本,因为eglasius提到没有匹配的enableSsl设置(我使用。net 4.0,但我怀疑它可以在。net 2.0或更高版本中工作),但这个配置只是为我工作(并且不需要您使用任何编程配置):

<system.net>
  <mailSettings>
    <smtp from="myusername@gmail.com" deliveryMethod="Network">
      <network defaultCredentials="false" enableSsl="true" host="smtp.gmail.com" port="587" password="password" userName="myusername@gmail.com"/>
    </smtp>
  </mailSettings>
</system.net>

您可能需要先在Gmail帐户上启用POP或IMAP: https://mail.google.com/mail/?shva=1#settings/fwdandpop

我建议先用普通的邮件客户端尝试一下…

我得到了同样的错误,上面的解决方案都没有帮助。

我的问题是,我是从一个远程服务器上运行的代码,而这个服务器从未用于登录gmail帐户。

我在远程服务器上打开浏览器,并从那里登录到gmail。它问了一个安全问题来验证是我,因为这是一个新的位置。在做了安全检查后,我能够通过代码进行身份验证。

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

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

如果以上方法都失败了,下面的方法几乎可以肯定是你问题的答案:

我得到了完全相同的错误,原来谷歌的新密码强度测量算法已经改变,认为我目前的密码太弱,并没有告诉我一件事(甚至没有消息或警告)…我是怎么发现的?好吧,我选择更改密码,看看它是否有帮助(尝试了所有其他方法都无济于事),当我更改密码时,它起作用了!

Then, for an experiment, I tried changing my password back to my previous password to see what would happen, and Gmail didn't actually allow me to do this, citing the reason "sorry we cannot allow you to save this change as your chosen password is too weak" and wouldn't let me go back to my old password. I figured from this that it was erroring out because either a) you need to change your password once every x amount of months or b). As I said before, their password strength algorithms changed and therefore the weak password I had was not accepted, even though they did not say anything about this when trying to login ANYWHERE! This (number 2) is the most likely scenario, as my weak password was about 4 months old, and it let me use it in Gmail.

他们对此只字不提是很糟糕的,但这也说得通。因为大多数被劫持的电子邮件都是使用gmail之外的软件登录的,我猜如果你想在gmail环境之外使用gmail,你需要一个更强的密码。