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

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

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

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

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

服务器的回复是:

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

更新:

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

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


当前回答

我也遇到了同样的问题,但原来是我的病毒防护程序阻止了发出的“垃圾邮件”。关闭这个允许我使用端口587通过GMail发送SMTP电子邮件

其他回答

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

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

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

为您的帐户打开不太安全的应用程序:https://www.google.com/settings/security/lesssecureapps

除了上面的其他故障排除步骤外,我还想补充一点,如果您在GMail帐户上启用了双重身份验证(也称为两步验证),那么您必须生成一个特定于应用程序的密码,并使用新生成的密码通过SMTP进行身份验证。

要创建一个密码,请访问:https://www.google.com/settings/并选择授权应用程序和站点来生成密码。

CVertex,确保检查你的代码,如果没有发现什么,就发布出来。我只是在一个测试ASP上启用这个。我在NET网站上工作,它工作。

实际上,在某种程度上,我的代码出现了问题。直到我在一个控制台程序上有一个更简单的版本,并看到它正在工作(Gmail端没有你所担心的变化),我才发现它。下面的代码就像你提到的例子一样:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
using System.Net;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new SmtpClient("smtp.gmail.com", 587)
            {
                Credentials = new NetworkCredential("myusername@gmail.com", "mypwd"),
                EnableSsl = true
            };
            client.Send("myusername@gmail.com", "myusername@gmail.com", "test", "testbody");
            Console.WriteLine("Sent");
            Console.ReadLine();
        }
    }
}

我还得到了它的工作使用网络的组合。config, http://msdn.microsoft.com/en-us/library/w355a94k.aspx和code(因为在配置文件中没有匹配的EnableSsl:)。

2021年更新

默认情况下,您还需要在您的gmail设置页面:google.com/settings/security/lesssecureapps中启用“不太安全的应用程序”。这是必要的,如果你得到异常" '服务器的响应是:5.5.1认证需要。-感谢@Ravendarksky

我不确定这需要哪个.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

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