0

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

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

是否有任何异步的方式发送大量的电子邮件在ASP.NET C#使用EWS?我用Google搜索,发现我还没有实现对夫妇的选择,但我有几个问题:

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

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

  3. 以前我用MSMQ来完成这个任务,但是我们没有时间来实现包括监听器在内的整个机制。

+0

将实际发送的电子邮件分成不同的应用程序。 Web应用程序只需*队列*发送的电子邮件。无论是使用消息队列还是将记录保存到数据库表中,都取决于您。一个单独的应用程序,可能是一个Windows服务或计划的控制台应用程序或某种正常运行的作业,会轮询该数据(消息队列,数据库等)并循环记录以发送电子邮件。 – David

回答

0

为什么你需要使用EWS?对于大量发送邮件而言,SMTP将是更好的选择,如果Exchange服务器上的传输服务不是以内部用户为目标,则会将它们发送到外部源,Exchange服务器上的传输服务将在必要时处理和排队消息。使用EWS意味着Exchange存储将处理邮件,并且如果启用了限制,您可能会受到限制,这会阻止您严重影响服务器,但会降低进程的速度。使用SMTP将避免对使用Outlook的最终用户产生任何影响(如果服务器是多滚动的,并且您的应用程序本质上并不是DOS本身的服务器),但可能会影响到您的信息流,关于您发送多少电子邮件,因为它需要处理队列中的消息。