【发布时间】:2014-05-12 22:23:37
【问题描述】:
我已经为 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: <a href=\"" + callbackUrl + "\">link</a>");
问题是当我打电话给SendEmailAsync() 时,我得到了一个System.Threading.Tasks.TaskCanceledException,目前还不清楚为什么。
如果我同步发送电子邮件 (client.Send(email)),一切正常。
所以我的问题是:
如何防止 TaskCanceledException 被抛出? 并且(假设我可以克服这个错误),
在将电子邮件发送回客户端期间,我应该如何处理通信错误(即,“这里没有这样的用户”类型的来自 SmtpClient 的响应?
【问题讨论】:
标签: c# asp.net-identity smtpclient