2012-07-13 23 views
0

因此,我一直在討論各種不同的想法,試圖發送電子郵件新聞稿,並且幾乎在每一個回合都遇到阻塞。關於監控的建議通訊在ASP.NET中發送成功

我現在使用共享主機環境,並且需要它在此環境中保持穩定。

我想創建一個定時的計劃系統,將批處理作爲後臺服務發送,但是我無法在此環境中執行此操作,所以我現在只需將一個長超時的AJAX帖子轉換爲.NET表單功能。

我有發送電子郵件,一個共同的功能,和我通過我的數據庫循環這樣做如下

For Each email In list 
    If Common.isValidEmail(email("email")) Then 
     Try 
      Common.sendEmail(email("email"), Common.tCase(email("email")), content, subject, "true", "newsletter", "customer") 
     Catch ex As Exception 
      errorList += email("id") & "," 
     End Try 
    Else 
     Common.changeData("DELETE FROM mailingList WHERE id='" & email("id") & "'") 
    End If 
Next 

我在這裏趕上兩個潛在的錯誤情況下,isValidEmail功能檢查,如果電子郵件是正確的,並然後我嘗試發送一封郵件,如果失敗了,我就會建立一個錯誤列表。

但是,如果服務中斷,這是不好的。

因此,我正在考慮通過爲每個電子郵件地址的數據庫行添加一個「發送」標誌來修改它,但是這需要爲每個循環寫入數據庫,這是否會拼命減慢速度?

然後任何時候它退出,我可以回到數據庫並重新發送給未被標記的用戶。

有沒有人有更好的想法?我希望這是一個後臺服務,並且正在考慮將其遷移到Azure,希望我可以運行預定的後臺服務,但現在,我需要一個解決方案來共享環境。

回答

0

是的,您將通過向數據庫記錄添加一個狀態來大幅提高解決方案的可靠性,這可以告訴您單個記錄是否已作爲該批次的一部分進行處理。這樣,您可以設置一個過程,每隔一段時間調用一次您的函數,並且每次調用只發送X個消息。因此,如果您的主機正在限制每小時發送多少封電子郵件,您現在可以通過調整每次通話中發送的郵件數量以及執行功能的頻率來輕鬆控制該郵件。

在處理它時,您可能不需要擔心更新每條記錄的速度,因爲發送SMTP郵件通常比更新本地數據庫要慢。如果你的數據庫在速度上有所改變,那麼你運行它的機器可能對資源(即需要更多內存)太害羞了,而不是新機器的更快時間。

+0

對......好吧,在這種情況下......這裏就是了! – 2012-07-13 15:37:46