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

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

我不能通过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语句,因为它实现了
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您是否捕捉到我的示例中显示的任何异常。在那个里放置断点可以揭示出哪里出了问题。