使用SSL

时间:2016-05-06 11:02:45

标签: c# smtp

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

        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方法?

3 个答案:

答案 0 :(得分:0)

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

  

SmtpClient类仅支持RFC 3207中定义的基于传输层安全性的安全SMTP的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服务器。但是在一天结束时,这取决于你。

答案 1 :(得分:0)

This link显示了另一种可以在Collaboration Data Objects component的帮助下使用SMTP over SSL发送电子邮件的方式。这种方式还支持将图像嵌入到电子邮件中。

答案 2 :(得分:-2)

请更改您的代码..

 SmtpServer.EnableSsl = false;