通过Gmail SMTP服务器使用C#发送电子邮件
出于某种原因,接受的答案和其他任何人都不适合我“通过Gmail以.NET发送电子邮件”。 他们为什么不工作?
更新:我已经尝试所有的答案(接受和否则)在另一个问题,但没有一个工作。
我只想知道它是否适用于其他人,否则Google可能会改变某些事情(之前已经发生过)。
当我尝试使用SmtpDeliveryMethod.Network
的代码SmtpDeliveryMethod.Network
,我很快收到SmtpException发送(消息)。 消息是
SMTP服务器需要安全连接或客户端未通过身份验证。
服务器响应是:
5.5.1需要验证。 了解更多“< - 严重的是,它结束了。
更新:
这是我很久以前问过的一个问题,并且接受的答案是我已经在不同项目上多次使用过的代码。
我已经在这篇文章和其他EmailSender项目中采用了一些想法来在Codeplex上创建一个EmailSender项目。 它专为可测试性而设计,支持我最喜欢的SMTP服务,如GoDaddy和Gmail。
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();
}
}
}
我也使用了web.config,http://msdn.microsoft.com/en-us/library/w355a94k.aspx和代码(因为在配置文件:()中没有匹配的EnableSsl
)。
以下几乎肯定会成为你问题的答案, 如果所有问题都失败了 :
我得到了完全相同的错误,结果证明谷歌的新密码强度测量算法已经改变,认为我当前的密码太弱,并没有告诉我一件事情(甚至没有消息或警告)......我怎么发现这个? 那么,我选择更改我的密码以查看它是否有帮助(尝试了其他所有方法都无济于事),并且当我更改密码时,它就起作用了!
然后,为了进行实验,我尝试将密码更改回以前的密码以查看会发生什么情况,并且Gmail实际上并未允许我这样做,理由是“抱歉,我们无法让您保存此更改为您的选择密码太弱“,不会让我回到我的旧密码。 我从中发现它出错了,因为a)您需要每x个月更改一次密码或b)。 正如我之前所说的那样,他们的密码强度算法发生了变化,因此我接受的弱密码未被接受,即使他们在尝试登录ANYWHERE时没有提及此事! 这个(数字2)是最可能的情况,因为我的弱密码大约4个月大,并且它让我可以在Gmail中使用它。
这很糟糕,他们对此一无所知,但它是有道理的。 由于大多数被劫持的电子邮件都是使用gmail之外的软件登录的,我猜想如果您想在Gmail环境之外使用Gmail,则需要使用更强的密码。
我希望这有帮助!
除了上面的其他故障排除步骤之外,我还想补充一点,如果您在Gmail帐户中启用了双因素身份验证(也称为两步验证),则必须生成特定于应用程序的密码并使用新密码生成的密码通过SMTP进行身份验证 。
要创建一个,请访问:https://www.google.com/settings/并选择授权应用程序和网站以生成密码。
链接地址: http://www.djcxy.com/p/50525.html