繁体   English   中英

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

[英]How does my ASP.NET app get the SMTP settings automatically from web.config?

我注意到我们总是像这样:

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>

所以我的问题是,它如何自动地将他们赶出去?

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

“此构造函数通过使用应用程序或计算机配置文件中的设置来初始化新SmtpClient的Host,Credentials和Port属性。”

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的问题。

在这里查看文章主题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM