通过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);

通过c#窗体应用程序发送电子邮件

您在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)

相关文章: