如何在Web.config中为SmtpClient启用SSL

hol*_*ira 27 .net asp.net web-config smtpclient

有没有办法从web.config设置EnableSSL?

我可以在代码中设置此属性,但这对于简单邮件Web事件和使用默认Smtp服务器的其他类不起作用.有任何想法吗?

eKe*_*ek0 25

对于.NET 3及更早版本:您不能.你必须手工管理它.

有关详细信息,请参阅https://blogs.msdn.microsoft.com/vikas/2008/04/29/bug-asp-net-2-0-passwordrecovery-web-control-cannot-send-emails-to- ssl-enabled-smtp-servers /.

对于.NET 4:你可以.

http://theoldsewingfactory.com/2011/01/06/enable-ssl-in-web-config-for-smtpclient/

<configuration>
    <system.net>
        <mailSettings>
            <smtp deliveryMethod=”network”>
                <network host="localhost"
                         port="25"
                         enableSsl="true"
                         defaultCredentials="true" />
            </smtp>
        </mailSettings>
    </system.net>
</configuration>
Run Code Online (Sandbox Code Playgroud)

  • 从.net 4.0开始,您现在可以在webconfig中设置enableSsl:http://theoldsewingfactory.com/2011/01/06/enable-ssl-in-web-config-for-smtpclient/ (6认同)

Mig*_*ero 19

我有一个肮脏的解决方法(直到.NET 4.0出来).而不是改变我的代码,它依赖于使用的端口来确定是否需要SSL.

var client = new SmtpClient();
client.EnableSsl = client.Port == 587 || client.Port == 465;
// This could also work
//client.EnableSsl = client.Port != 25;
Run Code Online (Sandbox Code Playgroud)

我说这是一个肮脏的黑客,但它适用于我们遇到的不同配置.


小智 5

这对我来说很有用.net 4

在web.config中的EG

network host="somesmtpserver" userName="do_not_reply@yourserver.com" 
password="whatever" port="25" enableSsl="true"         
Run Code Online (Sandbox Code Playgroud)