我注意到我们总是这样:
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>
所以我的问题是,它是如何自动解决的?
答案 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的问题。