通过c#windows窗体应用程序发送电子邮件
我不能通过c#发送电子邮件,当我按下发送电子邮件按钮时,它会卡住我的代码是通过c#windows窗体应用程序发送电子邮件,c#,C#,我不能通过c#发送电子邮件,当我按下发送电子邮件按钮时,它会卡住我的代码是 MailMessage message = new MailMessage(); SmtpClient smtp = new SmtpClient(); message.From = new MailAddress("example@gmail.com"); message.To.Add(new MailAddress
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语句,因为它实现了IDisposable
接口
即使在将端口更改为正确的端口后,您仍然可能会遇到异常,因为Gmail使用SSL进行身份验证。您需要添加远程服务器验证。可以使用验证用于身份验证的远程安全套接字层(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)您得到了什么错误?没有什么,只是stucking@MakhmoorRehman您是否捕捉到我的示例中显示的任何异常。在那个里放置断点可以揭示出哪里出了问题。