我是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,然后我的应用程序总是抛出超时异常。所以我决定尝试谷歌的服务器"smtp.gmail.com"与"587"端口,现在它提出了不同的异常消息:
SMTP服务器需要安全连接,或者客户端未通过身份验证。服务器响应为:5.5.1需要身份验证
我不明白在谷歌和雅虎这样的安全服务器上使用SMTP的先决条件是什么。请有人解释一下。
还要注意的是,我的谷歌账户没有启用两步验证,只是为了表明这一点,因为SO上的一些问题已经提到这可能是问题所在。
我也读过这个问题,但我直接在我的机器上测试——Gmail错误:SMTP服务器需要安全连接,或者客户端没有经过身份验证。服务器响应为:5.5.1需要身份验证
如果有帮助的话,下面是示例代码:
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
}
我刚刚测试了你的代码,它运行良好,你只需要修改这一部分:
nc.UserName = "test"
nc.Password = "password";
这必须是一个有效的gmail或谷歌应用程序电子邮件以及smtp连接的密码才能正常工作。我建议你把你自己的测试目的,然后修改这有你的电子邮件也:
m.From = new MailAddress("yourEmail@gmail.com");
m.To.Add(new MailAddress("yourEmail@gmail.com"));
只是为了验证您的消息是从您的函数传递的。