这是我的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。
答案 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;
}
1)配置PasswordRecovery控件
2)提供Web.Config中的所有设置,包括用户名/密码,服务器名称,电子邮件发件人等
3)尝试在SMTP服务器需要SSL时发送恢复电子邮件