dotnet core 2.0中appSettings.json中的SMTP设置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dotnet core 2.0中appSettings.json中的SMTP设置相关的知识,希望对你有一定的参考价值。

在Asp.net中,我通常可以使用以下代码发送电子邮件:

using (var smtp = new SmtpClient())
{
    await smtp.SendMailAsync(mailMessage);
}

在web.config中提供smtp设置,然后由SmtpClient自动使用。 web.config配置部分如下所示:

<mailSettings>
    <smtp deliveryMethod="Network">
      <network host="myHost" port="25" userName="myUsername" password="myPassword" defaultCredentials="false" />
    </smtp>
</mailSettings>

是否可以在dotnet core 2.0应用程序中的appSettings.json文件中进行配置,然后SmtpClient可以使用它,类似于Asp.net?

答案

如果您坚持使用System.Net.Mail.SmtpClient,则可以这样做:

appsettings.json

{
  "Smtp": {
    "Server": "mail.whatever.com",
    "Port": 25,
    "FromAddress": "yourfromemail@whatever.com"
  },
}

码:

    public async Task SendEmailAsync(string email, string subject, string htmlMessage)
    {
        MailMessage message = new MailMessage();
        message.Subject = subject;
        message.Body = htmlMessage;
        message.IsBodyHtml = true;
        message.To.Add(email);

        string host = _config.GetValue<string>("Smtp:Server", "defaultmailserver");
        int port = _config.GetValue<int>("Smtp:Port", 25);
        string fromAddress = _config.GetValue<string>("Smtp:FromAddress", "defaultfromaddress");

        message.From = new MailAddress(fromAddress);

        using (var smtpClient = new SmtpClient(host, port))
        {
            await smtpClient.SendMailAsync(message);
        }
    }

其中_configIConfiguration的一个实现,它被注入到SendEmailAsync方法所在的类中。

但是,由于它已经过时,因此探索上述评论中提到的其他方法可能会更好。

以上是关于dotnet core 2.0中appSettings.json中的SMTP设置的主要内容,如果未能解决你的问题,请参考以下文章

为 HTTPS 配置 ASP.NET Core 2.0 Kestrel

在 .NET Core 2.0 中使用 WCF 服务

.Net Core 2.0 生态-- 好文收藏

现在在.net core 2.0当中,有没有连接MySQL数据库的方法

Core 定时任务之HangFire

七步学会ASP.NET Core 2.0怎么发布/部署到Ubuntu Linux服务器并配置Nginx反向代理实现域名访问