发送电子邮件异步方法

Send Email async method

我需要能够异步进行所有电子邮件调用。我们如何完成这样的事情。所以假设我有一个方法 A

public void A() {
    SendEmail();
}

public void SendEmail() { }

如何使此 SendEmail() 方法异步?我们只是做一些像

public async void SendEmail() { }

谢谢。

建议 return 一个 Task,所以我 return 它而不是 returning void:

async Task SendEmail()
{
    //Do Something
}

首选任务,因为您想为呼叫者(可能是您自己)提供等待发送电子邮件等任务。

任务也可以用其他东西继续:

await SendEmail().ContinueWith(SendNotification);

创建一个异步包装器

public Task void SendEmailAsyn() { 
    return Task.Factory.StartNew(() => { SendEmail(); });
}

有一种更简单的方法来处理异步电子邮件,并且管理它的工具就内置在 OS 中。我在

提供了一个类似的答案来回答一个稍微不同的问题

基本上,您可以使用 System.Net.Mail.SmtpClient 快速排队写入假脱机文件夹中的磁盘的电子邮件,只需设置 DeliveryMethod PickupDirectoryFromIis。在 运行 服务器上,您只需在同一台机器上设置和配置 Microsoft SMTP 服务 以指向一个有效的 SMTP 服务器,该服务器将转发消息你。这意味着您已经有了一个完全线程化的高性能方法来异步发送电子邮件,而无需自己编写任何代码。非常适合从 Web 应用程序、Web 服务或任何其他基于服务器的应用程序发送消息。