以异步方式发送电子邮件

时间:2017-09-20 11:32:28

标签: c# asp.net-mvc asynchronous

我想使用smtp clinet发送电子邮件。此操作应在其他线程中执行,以便重定向到索引页面。到目前为止,我已经编写了以下代码。

private async Task<int> SendEmail(System.Net.Mail.SmtpClient smtp, System.Net.Mail.MailMessage m)
{
    smtp.Send(m);
    return 0;
}

以这种方式在其他异步任务方法中调用此方法。

await SendEmail(smtp, m);

这个命题是否正确?

1 个答案:

答案 0 :(得分:1)

您可以将SendEmail的实施更改为:

private async Task<int> SendEmail(System.Net.Mail.SmtpClient smtp, 
System.Net.Mail.MailMessage m)
{
    await smtp.SendAsync(m).ConfigureAwait(false);
    return 0;
}

另见以下网址: https://msdn.microsoft.com/en-us/magazine/jj991977.aspx

一直异步
不要混用阻塞和异步代码。

配置上下文
尽可能使用ConfigureAwait(false)。