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本身的服務器),但可能會影響到您的信息流,關於您發送多少電子郵件,因爲它需要處理隊列中的消息。