使用SSL发送电子邮件

我希望我的应用程序使用“SMTP over SSL”发送电子邮件,即使服务器不支持TLS也是如此。 到目前为止我已经尝试过

try { MailMessage mail = new MailMessage(); SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com"); mail.From = new MailAddress("abc@xyz.com"); mail.To.Add("to_address"); mail.Subject = "Test Mail"; mail.Body = "This is for testing SMTP mail from GMAIL"; SmtpServer.Port = 587; SmtpServer.Credentials = new System.Net.NetworkCredential("username", "password"); SmtpServer.EnableSsl = true; //true: sends using TLS, false: sends without security SmtpServer.Send(mail); MessageBox.Show("Mail sent"); } catch (Exception ex) { MessageBox.Show("Error" + ex.ToString()); } 

通过设置名为EnableSsl的属性,我可以通过支持TLS的服务器发送邮件,但我无法通过仅支持SMTP over SSL的服务器发送邮件。 如何支持此SMTP / SSL方法?

根据SMTPClient规范: https ://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.enablessl(v = vs.110).aspx

根据RFC 3207中的定义,SmtpClient类仅支持通过传输层安全性的SMTP服务扩展。在此模式下,SMTP会话从未加密的通道开始,然后客户端向服务器发出STARTTLS命令以切换到使用SSL进行安全通信。 有关详细信息,请参阅Internet工程任务组(IETF)发布的RFC 3207。

您可以尝试使用不推荐使用但支持SSL的System.Web.Mail.SmtpMail:

https://msdn.microsoft.com/en-us/library/system.web.mail.smtpmail(v=vs.110).aspx

TBH我认为您应该对您的服务发出警告,并声明只支持使用TLS的SMTP服务器。 但在一天结束时,这取决于你。

此链接显示了在协作数据对象组件的帮助下,我可以使用SMTP over SSL发送电子邮件的另一种方法。 这种方式还支持将图像嵌入到电子邮件中。

请更改您的代码..

  SmtpServer.EnableSsl = false;