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

问题描述 投票:1回答:1

在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?

c# asp.net .net-core
1个回答
0
投票

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

appsettings.json

{
  "Smtp": {
    "Server": "mail.whatever.com",
    "Port": 25,
    "FromAddress": "[email protected]"
  },
}

码:

    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方法所在的类中。

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

© www.soinside.com 2019 - 2024. All rights reserved.