gpt4 book ai didi

C# ASP.NET MVC 从配置文件访问 SMTP 设置

转载 作者:行者123 更新时间:2023-11-30 13:58:47 27 4
gpt4 key购买 nike

我好像卡住了。我有一个 asp.net mvc 4 应用程序,我想从服务类发送电子邮件。服务类位于与解决方案中的 mvc 项目分开的 C# 库项目中。我想在从配置文件调用的单独文件中设置电子邮件配置。下面应该放在mvc项目的web.config中还是在服务项目中创建一个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>

我曾尝试为服务项目创建一个仅包含 system.net 内容的 app.config 文件,但尝试时邮件设置始终为空:

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 文件中包含邮件设置,以排除 MailSettings.config 文件是问题所在并且仍然生成空指针。

我尝试了一个从 web.config 文件访问它的示例,如下所示:

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

在服务类中,尽管 WebConfigurationManager 脱离了上下文,Request.ApplicationPath 也是如此。因此,如果我必须从 web.config 文件中获取它,是否必须将 http 请求对象传递给服务类?这似乎是个坏主意。

最佳答案

只需使用:

SmtpClient SmtpServer = new SmtpClient();

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

作为 parameterless constructor of SmtpClient 的 MSDN 文档说:

This constructor initializes the Host, Credentials, and Port properties for the new SmtpClient by using the settings in the application or machine configuration files. For more information, see <mailSettings> Element (Network Settings).

关于C# ASP.NET MVC 从配置文件访问 SMTP 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15418684/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com