如何在web.config中使用TLS电子邮件

时间:2011-06-20 05:25:05

标签: asp.net

这是我的web.config文件:

<system.net>
    <mailSettings>
        <smtp from="xxx@gmail.com"  >
            <network host="smtp.gmail.com" port="587" userName="xxx@gmail.com" password="yyy" />
        </smtp>
    </mailSettings>
</system.net>

我需要启用TLS,这是我的电子邮件服务器的要求。但是我只看到SSL。

2 个答案:

答案 0 :(得分:24)

它实际上是等价的 - TLS比SSL更广泛。因此,请使用enableSsl= "true"启用TLS。根据{{​​3}},这将迫使SMTPClient使用MSDN documentation (并且RFC使用术语TLS / SSL)。

<network enableSsl="true" host="smtp.gmail.com" port="587" ...

答案 1 :(得分:1)

TLS(传输级别安全性)是一个稍微宽泛的术语,它取代了SSL(安全套接字层)以保护HTTP通信。所以你被要求做的是启用SSL。

System.Net.Mail(.net 2.0)的Web.Config中没有设置映射到System.Net.Mail.SmtpClient的EnableSSL属性。

分辨率

1)在后面的代码中,我们需要使用Web控件的PasswordRecovery1_SendingMail事件 2)此事件使我们能够访问正在发送的电子邮件消息,并且还可以选择取消发送操作 3)我们将制作此电子邮件的副本,并创建System.Net.Mail.SmtpClient的新实例
4)这次我们可以完全访问其属性,我们可以打开/关闭EnableSSL设置
5)让我们将EnableSSL设置为true并将电子邮件发送到所需的SMTP服务器

以下代码段可以完成这项工作。

protected void PasswordRecovery1_SendingMail(object sender, MailMessageEventArgs e)
{
System.Net.Mail.SmtpClient smtpSender = new System.Net.Mail.SmtpClient("mail.google.com", 587);
smtpSender.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
smtpSender.Credentials = new System.Net.NetworkCredential("username@gmail.com", "password");
smtpSender.EnableSsl = true;

smtpSender.Send(e.Message);
e.Cancel = true;
}

Repro Steps

1)配置PasswordRecovery控件
2)提供Web.Config中的所有设置,包括用户名/密码,服务器名称,电子邮件发件人等 3)尝试在SMTP服务器需要SSL时发送恢复电子邮件

检查以下链接:
http://blogs.msdn.com/b/vikas/archive/2008/04/29/bug-asp-net-2-0-passwordrecovery-web-control-cannot-send-emails-to-ssl-enabled-smtp-servers.aspx