在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": "[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);
}
}
其中_config
是IConfiguration
的一个实现,它被注入到SendEmailAsync
方法所在的类中。
但是,由于它已经过时,因此探索上述评论中提到的其他方法可能会更好。