2012-06-11 119 views
5

我有一個網站,我需要發送個性化的電子郵件給註冊會員。這不是一個廣告程序(垃圾郵件),而是時常通知他們他們的狀態。批量發送的電子郵件數量最多爲3000個。該網站託管在Windows 2008 Server(VPS)上,並在IIS7上安裝了SMTP。在asp.net發送批量電子郵件的最佳方式

花了一些時間閱讀如何實現通過asp.net發送大量電子郵件的機制後,我感到有點困惑。


從我讀我可以:

  • 同步或異步的(新線),給他們一個循環
  • 準備,把他們在拾取目錄
  • 創建一個Windows服務將檢查現有隊列
  • 從sql server 2008發送它們(我有快遞)。

請問您可以建議最好的方法嗎?

我有關於黑名單我的服務器有問題嗎?

有沒有更好的方法,這裏沒有提到,實施這個?

在此先感謝。

+3

不要。您的服務器在內部執行這些操作會遇到很多風險:黑名單 - 是的。通過合法的服務運行它 - 有一噸可用。 – matthewnreid

回答

5

關於您的服務器被列入黑名單,您發送「一次」多少「發送給誰」的次數並不重要。如果您將它們發送給不需要它們的用戶,並且他們將您報告爲垃圾郵件發送者,那麼您無疑會被許多DNS黑名單站點中的一個列入黑名單。

務必確保人們首先選擇使用雙重選擇加入系統,如果您發送電子郵件,如果他們回覆「激活帳戶」,那麼您可以向他們發送更多電子郵件(如果他們不假定他們輸入的話)錯誤的地址。

就最佳處理方式而言,我總是發現最好的方法是編寫一個與網站分開運行的小型服務。您真的不想使用與IIS服務相同的線程發送電子郵件。

如果你想真正走完整的專業方式。你需要實現某種形式的消息隊列系統(比如ActiveMQ或者RabbitMQ),然後將它們發送到一個隊列中,然後創建一個Windows進程來監聽其中一個隊列,並且當一封郵件到達時發送出去。這樣,如果你的郵件處理器死了,或者運行緩慢等等,你可以調出更多的處理器,把它連接到同一個隊列,更多的進程共享這個工作(簡單分發)。

稍微不那麼複雜的方法是使用一個FIFO隊列,這個隊列很容易在數據庫中創建,只需將郵件保存到一個帶有日期戳的表中,然後用SELECT TOP 10 * FROM OutgoingMail ORDER BY datestamp ASC(記住並使用適當的索引),然後使用服務將它們批量發送出去。

如果可能,IIS應該儘可能地避免異步,因爲您不希望應用程序池回收在您的工作中一半。

相關問題