Csharp/C#教程:Asp.Net Identity 2.0 – 如何使用SmtpClient实现IIdentityMessageService来执行异步SMTP?分享


Asp.Net Identity 2.0 – 如何使用SmtpClient实现IIdentityMessageService来执行异步SMTP?

我已经为Asp.Net Identity 2.0实现了一个简单的EmailService(通过IIdentityMessageService接口。

  public class EmailService : IIdentityMessageService { public Task SendAsync(IdentityMessage message) { // convert IdentityMessage to a MailMessage var email = new MailMessage(new MailAddress("noreply@mydomain.com", "(do not reply)"), new MailAddress(message.Destination)) { Subject = message.Subject, Body = message.Body, IsBodyHtml = true }; using (var client = new SmtpClient()) // SmtpClient configuration comes from config file { return client.SendMailAsync(email); } } } 

要发送电子邮件,我将通过UserManager:

await _userManager.SendEmailAsync(user.Id, "Confirm your account","Please confirm your account by clicking this link: link");

问题是,当我调用SendEmailAsync()时,我得到一个System.Threading.Tasks.TaskCanceledException ,并且不清楚为什么。

如果我同步发送电子邮件( client.Send(email) ),一切正常。

所以我的问题是:

您的问题是在发送电子邮件之前处理了SmtpClient

两种方式:

您必须在方法上放置异步。

上述就是C#学习教程:Asp.Net Identity 2.0 – 如何使用SmtpClient实现IIdentityMessageService来执行异步SMTP?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

  public async Task SendAsync(IdentityMessage message) { using (SmtpClient client = new SmtpClient()) { using (var mailMessage = new MailMessage("your@email.com", message.Destination, message.Subject, message.Body)) { await client.SendMailAsync(mailMessage); } } } } 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/958434.html

(0)
上一篇 2021年11月22日
下一篇 2021年11月22日

精彩推荐