Viq*_*qas 6 c# asp.net .net-core
在Asp.net中,我通常可以使用以下代码发送电子邮件:
using (var smtp = new SmtpClient())
{
await smtp.SendMailAsync(mailMessage);
}
Run Code Online (Sandbox Code Playgroud)
通过web.config中提供的smtp设置,然后,它们会自动使用SmtpClient。web.config配置部分如下所示:
<mailSettings>
<smtp deliveryMethod="Network">
<network host="myHost" port="25" userName="myUsername" password="myPassword" defaultCredentials="false" />
</smtp>
</mailSettings>
Run Code Online (Sandbox Code Playgroud)
是否可以在dotnet core 2.0应用程序的appSettings.json文件中进行配置,然后由SmtpClient类似于Asp.net 进行使用?
您可能想要实现的目标是这样的:
\n文件:( appsettings.json您定义数据的位置)
{\n ...\n "EmailSettings": {\n "From": "no-reply@example.com",\n "Username": "username",\n "Password": "password",\n "Host": "smtp.example.com",\n "Port": 25\n },\n ...\n}\nRun Code Online (Sandbox Code Playgroud)\n文件:( Email.cs您在其中定义将包含数据的模型)
public class EmailSettings\n{\n public string From { get; set; }\n public string Username { get; set; }\n public string Password { get; set; }\n public string Host { get; set; }\n public int Port { get; set; }\n}\nRun Code Online (Sandbox Code Playgroud)\n文件:( Startup.cs将数据绑定到随处可用的模型的位置)
public void ConfigureServices(IServiceCollection services)\n{ \n ...\n\n services.AddConfiguration<EmailSettings>(Configuration, "EmailSettings");\n\n ...\n}\nRun Code Online (Sandbox Code Playgroud)\n文件:( Email.cs您在其中定义如何发送邮件)
public class EmailService\n{\n private readonly EmailSettings _mailSettings;\n public EmailService(EmailSettings mailSettings)\n {\n _mailSettings = mailSettings;\n }\n\n public async Task<bool> SendMail(MailRequest mailRequest)\n {\n //Here goes your code to send a message using "_mailSettings" like:\n // _mailSettings.From\n // _mailSettings.Port\n //ect...\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n为此,请打开本教程并转到名为“ #6 AppSettings \xe2\x80\x93 PRE-Binding ”的方式 6
\n在那里你会找到不同的方法来完成这项工作,但强烈推荐第六种方法
\n如果您坚持使用System.Net.Mail.SmtpClient,则可以通过以下方式进行操作:
appsettings.json
{
"Smtp": {
"Server": "mail.whatever.com",
"Port": 25,
"FromAddress": "yourfromemail@whatever.com"
},
}
Run Code Online (Sandbox Code Playgroud)
码:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
在哪里_config实现的实现IConfiguration被注入到该SendEmailAsync方法所在的类中。
但是,由于它已过时,因此最好探索上面的评论中提到的其他方法。
| 归档时间: |
|
| 查看次数: |
3256 次 |
| 最近记录: |