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



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

要求:一旦我在 UI 中单击"发送",它就会提示用户说正在发送电子邮件,用户可以继续浏览。

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

  1. 是否可以使用委托异步执行任务?如果用户退出应用程序,会发生什么情况。它会完成发送电子邮件还是停止?

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

  3. 过去,我使用 MSMQ 来完成此任务,但我们没有时间实现包括侦听器在内的整个机制。

为什么需要使用 EWS?SMTP将是批量发送邮件的更好选择,Exchange服务器上的传输服务将在必要时处理和排队邮件,如果它们不是发往内部用户,它会将它们发送到其外部源。使用 EWS 意味着 Exchange 存储将处理邮件,如果启用限制,则可能会受到限制,这应该会阻止您对服务器造成太大影响,但会减慢进程。使用 SMTP 将避免对使用 Outlook 的最终用户产生任何影响(如果服务器是多滚动的,并且您的应用程序最终不是您自己的 DOS 服务器,则有一些限制条件(,但是可能会影响进出您的组织的邮件流,具体取决于您发送的电子邮件量,因为它需要处理队列中的邮件。

最新更新