当我尝试异步发送电子邮件时,我遇到了一个问题,我发现Stackoverflow上没有帖子,但没有一个是有帮助的。我有以下代码块
public class EmailService : IIdentityMessageService
{
public Task SendAsync(IdentityMessage message)
{
// Plug in your email service here to send an email.
var mailMessage = new MailMessage
("me@example.com", message.Destination, message.Subject, message.Body);
mailMessage.IsBodyHtml = true;
var client = new SmtpClient();
client.SendCompleted += (s, e) => client.Dispose();
client.SendAsync(mailMessage,null);
return Task.FromResult(0);
}
}我收到一封电子邮件,但在运行此代码块时出现异常
an asynchronous module or handler completed while an asynchronous operation was still pending.有什么建议吗?
发布于 2014-05-19 03:17:18
使用SendMailAsync而不是SendAsync
public class EmailService : IIdentityMessageService
{
public async Task SendAsync(IdentityMessage message)
{
// Plug in your email service here to send an email.
var mailMessage = new MailMessage
("me@example.com", message.Destination, message.Subject, message.Body);
mailMessage.IsBodyHtml = true;
using(var client = new SmtpClient())
{
await client.SendMailAsync(mailMessage);
}
}
}发布于 2017-01-31 22:42:21
-Future阅读器,处理MailMessage,或者像我喜欢的那样使用using语法!我不知道当你不处理它时,你会损失多少内存,或者它是否可以以某种方式被回收。我将发送大量的电子邮件给用户,所以我不想知道它是否会随着时间的推移而停止工作。
public class EmailService : IIdentityMessageService
{
public async Task SendAsync(IdentityMessage message)
{
// Plug in your email service here to send an email.
using (var mailMessage = new MailMessage("me@example.com", message.Destination, message.Subject, message.Body))
{
mailMessage.IsBodyHtml = true;
using (var client = new SmtpClient())
{
await client.SendMailAsync(mailMessage);
}
}
}
}https://stackoverflow.com/questions/23725829
复制相似问题