通过c#窗体应用程序发送电子邮件
本文关键字:电子邮件 应用程序 窗体 通过 | 更新日期: 2023-09-27 18:10:03
我不能通过c#发送电子邮件,当我按下发送电子邮件按钮时,它会卡住我的代码是这个
MailMessage message = new MailMessage();
SmtpClient smtp = new SmtpClient();
message.From = new MailAddress("example@gmail.com");
message.To.Add(new MailAddress("example@gmail.com"));
message.Subject = "Subject";
message.Body = "Body";
smtp.Host = "smtp.gmail.com";
smtp.Port = 465;
smtp.EnableSsl = true;
smtp.Credentials = new NetworkCredential("email@gmail.com", "password");
smtp.Send(message);
您在Gmail使用错误的SMTP端口,正确的端口号是587。另外,我建议您对SmtpClient
使用Using Statement,因为它实现了IDisposable
接口。
即使将端口更改为正确的端口,您仍然可能面临异常,因为Gmail使用SSL进行身份验证。您将需要添加远程服务器验证。可以使用RemoteCertificateValidationCallback Delegate
来验证用于认证的远程安全套接字层(SSL)证书。
MailMessage message = new MailMessage();
message.From = new MailAddress("example@gmail.com");
message.To.Add(new MailAddress("example@gmail.com"));
message.Subject = "Subject";
message.Body = "Body";
try
{
using (var smtpClient = new SmtpClient("smtp.gmail.com", 587))
{
smtpClient.UseDefaultCredentials = false;
smtpClient.EnableSsl = true;
ServicePointManager.ServerCertificateValidationCallback =
delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true;
};
smtpClient.Credentials = new NetworkCredential("email@gmail.com", "password");
smtpClient.Send(emailMessage);
}
}
catch (Exception e)
{
emailMessage = null;
}
谢谢!对于你的帮助,代码是正确的,但在我的帐户中,当我打开它时,lesssecureapps被关闭了,我的代码无论如何都会工作,感谢你们所有人(Y)