3

我尝试了很多变体来快速将响应返回给用户并在后台发送电子邮件但失败了。这是我尝试过的一个示例,

ThreadPool.QueueUserWorkItem(callback => 
                // It is important to put this line inside try catch otherwise it might crash the process 
                client.SendAsync(message, message)
                );

当我在 client.SendAsync 上设置断点时,在执行此行之前不会向用户发送任何响应。那么在后台发送电子邮件而不等待响应的正确方法是什么。

更新:我想我遇到了问题,实际上是 VS 调试器停止了 asp.net 线程(挂起),直到您逐步执行。上面的代码适用于我的场景。

4

3 回答 3

1

您可以将电子邮件放在消息队列中,并在从该消息队列读取的单独服务中处理它的实际发送。

于 2013-02-21T13:34:28.090 回答
1

根据电子邮件的数量和大小,您也可以考虑将它们写入取件文件夹。您可以使用本地 IIS SMTP 服务器通过智能主机中继邮件。在实践中,这对我们非常有效。

于 2013-02-21T13:38:03.767 回答
1

使用 ASP.NET 异步发送电子邮件http://www.asp.net/web-forms/videos/how-do-i/how-do-i-send-email-asynchronously-with-aspnet

于 2013-02-21T13:49:10.600 回答