使用ASP.NET MVC中的EWS异步发送批量电子邮件

时间:2017-08-24 18:47:29

标签: asp.net-mvc email asynchronous threadpool exchangewebservices

我在C#中有一个ASP.NET MVC Web应用程序。我希望毫不拖延地发送带附件的批量电子邮件。我使用Microsoft.Exchange.WebServices使用Exchange服务器发送电子邮件。一切正常,但即使发送2封1 MB附件的电子邮件也需要大约30-45秒的时间。我也有使用发送2000封电子邮件的情况,所以我知道它会使服务器崩溃。

要求:只要我在用户界面中点击发送,就会提示用户说正在发送电子邮件,用户可以继续浏览。

是否有任何使用EWS在ASP.NET C#中发送批量电子邮件的异步方法?我用Google搜索并找到了几个尚未实施的选项,但我几乎没有问题:

  1. 我可以使用Delegates异步执行任务吗?如果用户退出应用程序将会发生什么。它会完成发送电子邮件还是停止?

  2. 我可以使用System.Threading.ThreadPool.QueueUserWorkItem吗?如果用户退出应用程序将会发生什么。它会完成发送电子邮件还是停止?

  3. 过去我使用MSMQ来完成这项任务,但我们没有时间实现整个机制,包括听众。

1 个答案:

答案 0 :(得分:1)

为什么需要使用EWS? SMTP是发送邮件的更好选择,Exchange服务器上的传输服务将处理并在必要时对邮件进行排队,如果它们不是发往内部用户,则会将它们发送到外部源。使用EWS意味着Exchange存储将处理消息,如果启用了限制,则可能会受到限制,这会阻止您过度影响服务器,但会降低进程的速度。使用SMTP可以避免对使用Outlook的最终用户造成任何影响(如果服务器是多卷的,并且您的应用程序最终基本上不是DOS自己的服务器,则有一些附带条件)但是可能会影响到您的组织内外的消息流。关于你发送的电子邮件数量,以及在队列中处理消息所需的电子邮件。