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