【发布时间】:2014-09-30 20:32:53
【问题描述】:
我正在开发一个 ASP.NET Web 窗体应用程序,并且我正在尝试以编程方式向自己发送一封电子邮件。我正在使用 Gmail 的 SMTP 客户端,一切都很好,只是当我发送邮件时,我收到了这个错误:
"System.Net.Mail.SmtpException: SMTP 服务器需要一个安全的 连接或客户端未通过身份验证。服务器响应 是:5.5.1 需要身份验证。了解更多信息,请访问“
如果我进入我的 gmail 帐户设置并启用一个允许我允许访问“不太安全的应用程序”的选项,那么一切正常。我想知道启用此选项后如何发送电子邮件。
protected void sendEmail(object sender, EventArgs e)
{
var client = new SmtpClient("smtp.gmail.com", 587)
{
Credentials = new System.Net.NetworkCredential("myusername@gmail.com", "mypassword"),
DeliveryMethod = SmtpDeliveryMethod.Network,
EnableSsl = true
};
MailAddress from = new MailAddress("myusername@gmail.com", "Torchedmuffinz");
MailAddress to = new MailAddress("myusername@gmail.com", "Torchedmuffinz");
MailMessage message = new MailMessage(from, to);
message.Subject = "test";
message.Body = "test";
Attachment attachFile = new Attachment(@"pathtofile");
message.Attachments.Add(attachFile);
try { client.Send(message); }
catch (Exception email_exception)
{
System.Diagnostics.Debug.WriteLine(email_exception);
}
}
【问题讨论】:
-
不确定您的意思。您正在使用具有设置要求的系统 (GMAIL),以便您使用它...
-
@EdSf 我不确定这些要求是什么。在深入挖掘之后,我发现了一篇文章link,表明他们在某个时候切换到“OAuth 2.0”,但直到最近才开始强制执行。假设我的问题来自于此,我现在正在尝试学习如何使我的应用程序遵守这一点。
-
@Torchedmuffinz - 我尝试了你的代码,如果我将端口更改为 25 而不是 587,它对我有用。
-
您是否尝试过使用电子邮件客户端(如 Outlook)并确保您可以使用它成功发送电子邮件?我之所以这么问,是因为 Gmail 确实有一些有趣的身份验证问题。这至少可以验证您的代码或您的帐户是否存在问题。
-
@Torchedmuffinz - 我浏览了我的 gmail 设置,发现我在“转发和 POP/IMAP”选项卡下启用了 POP 和 Imap。不确定这是否对允许我的代码发送电子邮件有任何影响。还可以尝试使用此链接accounts.google.com/DisplayUnlockCaptcha 允许访问应用程序