【发布时间】:2014-12-12 06:25:36
【问题描述】:
我是 C# 中 SMTP 客户端的新手。所以我决定用我的凭据来测试它。我构建了一个 ASP.NET Web 表单应用程序,该应用程序有一个联系我们页面,我试图在该页面上向填写表单的任何人发送电子邮件。
我在看完这篇文章后尝试了示例代码 - https://www.c-sharpcorner.com/UploadFile/87b416/sending-a-simple-email-using-smtpclient-in-C-Sharp/
我在雅虎有一个帐户,所以我使用它的 SMTP 域“smtp.mail.yahoo.com”,端口号:465,然后我的应用程序总是抛出超时异常。所以我决定尝试使用带有“587”端口的谷歌服务器“smtp.gmail.com”,现在它引发了不同的异常消息:
SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.5.1 需要身份验证
我不明白在 Google 和 Yahoo 等安全服务器上使用 SMTP 的先决条件是什么。请有人解释一下。
另外请注意,我没有为我的 Google 帐户启用两步验证,只是为了说明清楚,因为关于 SO 的一些问题提到这可能是问题所在。
我也读过这个问题,但我直接在我的机器上测试 - Gmail Error :The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required
如果有帮助,这里是示例代码:
try
{
MailMessage m = new MailMessage();
m.From = new MailAddress("dummy123@gmail.com");
m.To.Add(new MailAddress("dummyreceiver123@gmail.com"));
m.Subject = TBSub.Text;
m.Body = TBBody.Text;
m.IsBodyHtml = true;
NetworkCredential nc = new NetworkCredential();
nc.UserName = "dummy123"
nc.Password = "dummy@123";
SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
smtp.Credentials = nc;
smtp.EnableSsl = true;
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.Send(m);
}
catch (Exception ex)
{
//Log this error
}
【问题讨论】:
-
你试过添加 smtp.UseDefaultCredentials = false;当您分配凭据对象时?
-
感谢@NinjaMid76 的评论。我添加了该语句,但它给出了 'SMTP 身份验证错误异常
标签: c# email smtp smtpclient