网上找了一下,发现一个很不错的邮件发送服务Mailgun,首先要注册Mailgun账号,获得apikey以及domainame;
然后项目中安装nuget:
配置并注册服务:
public interface IEmailSender ???{ ???????Task SendEmailAsync(string email, string subject, string message); ???}
public class EmailSender:IEmailSender ???{ ???????private readonly EmailSettings _emailSettings; ???????public EmailSender(IOptions<EmailSettings> emailOptions) ???????{ ???????????_emailSettings = emailOptions.Value; ???????} ???????public Task SendEmailAsync(string account, string subject, string mess) ???????{ ???????????var domainName = _emailSettings.DomainName; ???????????var apiKey = _emailSettings.ApiKey; ???????????var sender = new MailgunSender(domainName, apiKey); ???????????Email.DefaultSender = sender; ???????????var email = Email.From(_emailSettings.From, "XXXXXXX平台") ???????????????.To(account) ???????????????.Subject(subject) ???????????????.Body(mess); ???????????return email.SendAsync(); ???????} ???}
public class EmailSettings ???{ ???????public string ApiKey { get; set; } ???????public string ApiBaseUri { get; set; } ???????public string RequestUri { get; set; } ???????public string From { get; set; } ???????public ?string DomainName { get; set; } ???}
#region 注册邮件服务 ???????????services.Configure<EmailSettings>(Configuration.GetSection("EmailSettings")); ???????????services.AddTransient<IEmailSender, EmailSender>(); ???????????#endregion
调用:
public class TestController : Controller ???{ ???????private readonly IOptions<EmailSettings> _emailOptions; ???????private readonly ILogger<TestController> _logger; ???????private readonly IEmailSender _emailSender; ???????public TestController(IOptions<EmailSettings> emailOptions,ILogger<TestController> logger,IEmailSender emailSender) ???????{ ???????????_emailOptions = emailOptions; ???????????_logger = logger; ???????????_emailSender = emailSender; ???????} ???????public async Task<IActionResult> Index() ???????{ ???????????try ???????????{ ???????????????string code = "259878"; ???????????????await _emailSender.SendEmailAsync("3sdaasdadasdad6@qq.com",EmailType.Captcha ,$"验证码:{code},如非本人操作请忽略。"); ???????????????_logger.LogInformation("发送邮件,to:"+"3asdasdadad6@qq.com"+",类型:"+EmailType.Captcha); ???????????????return Content("ok"); ???????????} ???????????catch (Exception e) ???????????{ ???????????????return Content("出错了:"+e.Message); ???????????} ???????????????????} ???}
收到验证码:
asp.net core 2.0 邮件发送服务
原文地址:https://www.cnblogs.com/hany-sundigital/p/10030131.html