我的ASP.NET应用程序如何从web.config自动获取SMTP设置?

我注意到我们总是这样:

SmtpClient mSmtpClient = new SmtpClient(); // Send the mail message mSmtpClient.Send(mMailMessage); 

并且设置凭据的唯一位置是web.config:

         

所以我的问题是,它是如何自动解决的?

该文档指出SmtpClient的无参数构造函数从应用程序或机器配置文件中读取其配置。 对于Web应用程序,应用程序配置文件是web.config。 这也意味着如果未在Web.config中设置mailSettings元素,它将在放弃之前在machine.config中查找设置:

“此构造函数使用应用程序或计算机配置文件中的设置初始化新SmtpClient的主机,凭据和端口属性。”

 var config = WebConfigurationManager.OpenWebConfiguration("Web.config"); var settings= config.GetSectionGroup("system.net/mailSettings") as MailSettingsSectionGroup; if (settings!= null) { var port = settings.Smtp.Network.Port; var host = settings.Smtp.Network.Host; var username = settings.Smtp.Network.UserName; var password = settings.Smtp.Network.Password; } 

Windows文件夹中有一个machine.config文件,每个网站(或应用程序)都有一个web.config文件(或app.config文件)。 这些文件组合在一起以获取应用程序域的设置。

smtp类可以通过ConfigurationManager类简单地访问配置

极好的回答Driis。 我希望我有足够的声誉来提升你的答案,但我不:(

无论如何,我提供了类似的答案,虽然它是像Abatishchev节目手动完成的。 唯一的区别是我解决了无法访问atm的enableSsl的问题。

请参阅文章主题 。