2014-04-10 86 views
0

我有一個MVC應用程序,它也需要發送電子郵件給客戶端。 發送郵件時,郵件服務器可能已關閉。所以我想將它們存儲在數據庫中。 我可以在我的應用程序中實現哪些選項,可以檢查數據庫表併發送未發送的電子郵件?mvc從數據庫發送郵件

以前有人做過這個嗎?有小費嗎。

回答

1

應該是非常簡單的。你基本上有兩個應用程序共享同一個數據庫:

  • MVC應用
  • Windows服務應用程序

的MVC應用程序會寫郵件數據庫。您可以將信息存儲在您喜歡的任何結構中,只要它具有足夠的信息來構建電子郵件。此外,每條記錄都會有一個「發送」標誌(或「發送日期」,或其他方式記錄是否/何時發送)。

Windows服務會定期(每小時?每分鐘?等)檢查數據庫中的「未發送」消息。它可以逐個嘗試發送它們。任何時候它成功(只要它知道,只要郵件服務器沒有錯誤),它會更新該記錄,指示它是否/何時發送。

每次爲每條記錄執行此操作。隨着單個郵件成功發送,它們將被更新並且不會再次嘗試。如果出現錯誤,則會跳過該過程並繼續處理其他消息。對於任何給定的錯誤,我還建議將該錯誤記錄爲數據的一部分,以便日後檢查問題。例如,如果一封郵件始終失敗,那麼問題可能出在郵件本身而不是郵件服務器上。在某處錄製錯誤將允許您解決該問題。

+0

它可能聽起來很愚蠢,但我以前沒有使用過Windows服務。從這個Windows服務應用程序到數據庫的連接如何工作?我生成的數據庫首先使用代碼。目前在我的MVC應用程序中,我使用實體框架來獲取或執行任何數據庫操作。有小費嗎? – Cybercop

+0

@ Biplov13:與其他任何東西一樣,Windows服務是一個.NET應用程序。相同的代碼將起作用。理想情況下,您可以將所有數據訪問代碼放在類庫中,而MVC應用程序和Window Service應用程序都會引用該類庫,共享相同的數據訪問代碼。 – David

相關問題