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

时间:2010-05-04 17:21:11

标签: c# asp.net web-config smtpclient

我注意到我们总是这样:

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

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

  <system.net>
    <mailSettings>
      <smtp>
        <network host="xxx.xx.xxx.229" userName="xxxxxxxx" password="xxxxxxxx"/>
      </smtp>
    </mailSettings>
  </system.net>

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

4 个答案:

答案 0 :(得分:17)

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

  

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

答案 1 :(得分:2)

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;      
}

答案 2 :(得分:1)

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

smtp类只需通过ConfigurationManager Class

访问配置即可

答案 3 :(得分:1)

优秀的答案Driis。我希望我有足够的声誉来提升你的答案,但我不会:(

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

See article thread here