c# ASP.从配置文件访问SMTP设置

本文关键字:SMTP 设置 访问 配置文件 ASP | 更新日期: 2023-09-27 18:04:02

我好像卡住了。我有一个asp.net mvc 4应用程序,我想从一个服务类发送电子邮件。服务类位于一个c#库项目中,与解决方案中的mvc项目分开。我想在一个单独的文件中设置电子邮件配置,从配置文件调用。以下内容应该在网上进行。在MVC项目中配置还是在服务项目中创建一个app.config文件?

<system.net>
    <mailSettings>
       <smtp configSource="MailSettings.config" />
    </mailSettings>
</system.net>

然后我把它放在一个名为MailSettings.config的单独文件中:

<smtp from="abc@email.com">
   <network host="smtp.server.com" port="587" userName="abc@email.com" password="password" enableSsl="true" />
</smtp>

我已经尝试创建一个app.config文件,只有system.net的东西为服务项目,但邮件设置总是空的,当我尝试:

MailSettingsSectionGroup settings = (MailSettingsSectionGroup)ConfigurationManager.GetSection("system.net/mailSettings");
SmtpClient SmtpServer = new SmtpClient(settings.Smtp.Network.Host); //get null exception for settings.Smtp.Network.Host)

另外,我试过在app.config文件中包括邮件设置,以排除邮件设置。配置文件是问题,仍然产生一个空指针。

我尝试了一个从网络访问它的例子。配置文件如下:

Configuration configurationFile = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
MailSettingsSectionGroup mailSettings = configurationFile.GetSectionGroup("system.net/mailSettings") as MailSettingsSectionGroup;

在服务类中,WebConfigurationManager脱离了上下文,Request.ApplicationPath也脱离了上下文。所以如果我必须从网上找的话。配置文件,我是否必须将http请求对象传递给服务类?

c# ASP.从配置文件访问SMTP设置

直接使用:

SmtpClient SmtpServer = new SmtpClient();

这个构造函数将直接选择配置。

正如SmtpClient的无参数构造函数的MSDN文档所说:

这个构造函数通过使用应用程序或机器配置文件中的设置来初始化新的SmtpClient的Host、Credentials和Port属性。详细信息请参见<mailSettings>元素(网络设置)。