我有一個Web應用程序,在執行特定操作後,應從中發送電子郵件。我有一些替代方案來處理這個問題,我不確定哪一個是最好的。使用C#/。NET發送電子郵件策略
第一個是,當用戶執行操作時,電子郵件直接從ASP.NET應用程序發送。但我認爲這不是一個真正可靠的系統,因爲如果SMTP服務器關閉或發生其他事情,用戶只會得到一個反饋,表明他的行爲無法完成。
作爲替代,我想實現一個排隊系統是我有一些想法:
- 推送電子郵件發送,到數據庫表,和業務應用會定期檢查新郵件,然後發送他們。成功發送時,它表示電子郵件任務已完成。
- 使用MSMQ進行排隊。在這種情況下,整個電子郵件可以作爲消息傳遞;或者另一種方法是將帶有附件的消息存儲到數據庫表中,並僅傳遞查詢數據庫表併發送消息所需的數據。在這種情況下,我不必處理MSMQ的大小限制(由於附件)。
- 別的東西,像本地WCF服務,通知服務
哪種方式,你認爲是最好的?
這完全取決於您的業務需求。如果相應的電子郵件可能由於例如某些原因而延遲了幾天,那麼可以採取行動以「成功」。 SMTP正在關閉?如果是這樣,數據庫隊列看起來像一個簡單而好的解決方案。 – Jon
嗯,不是幾天,但如果有例如5分鐘出來它仍然不是真正用戶友好的通知他們以後再試一次消息,我想避免。第一個解決方案看起來很容易實現,但我必須爲檢查指定輪詢間隔,然後執行批處理作業。在其他情況下,服務會立即收到通知,並可以處理髮送。然而,我不是這個話題的專家,這就是爲什麼我想在我描述的解決方案中得到一些一般性的反饋。 – norbip