在 asp.net 中將時事通訊發送到大約 10000 封電子郵件
我必須編寫發送時事通訊的申請。發送新聞通訊成千上萬的使用者的最佳方式是什麼?我的要求是
- 每封郵件分別為 To :
- 每封郵件都有唯一的退訂連結
使用 .net 的 SMTP 郵件類好不好?我看起來可能有問題,但無法決定我應該去哪條路?有很多建議
- 多執行緒 Windows 服務
- 使用郵件伺服器
- 在每次發送之間添加 thread.sleep(2000)。
任何人都可以提出一個很好的方法來解決這個問題嗎?
我不建議發送 asp.net 網頁,即使您確實在單獨的後台執行緒中啟動它。我認為您冒著伺服器在發送過程中回收您的程序的風險,這會搞砸。您確實需要編寫某種單獨的服務或應用程序來發送您的電子郵件。
最簡單的選擇是只創建一個快速而骯髒的控制台或 Windows 窗體應用程序。
就像其他海報所說的那樣,日誌記錄也很重要。如果它失敗了,您想確切地知道發送了什麼以及它停止的位置,這樣當您重新啟動它時,您就不會再次向所有為它工作的人發送郵件。您希望能夠輸入發送的起點,因此如果您需要在編號電子郵件 #5000 處重新啟動,您可以。
System.Net.Mail 命名空間中的類可以很好地發送您的郵件。
最大的問題之一是找到一個可以讓您發送如此多電子郵件的電子郵件主機。大多數電子郵件主機都有限制,有時它會根據伺服器條件而變化,因此如果伺服器被大量使用,那麼電子郵件限制將更加嚴格,您每小時可能只能設置 500 封電子郵件。
我們有一份時事通訊作為單獨的電子郵件發送給大約 20000 人,我們不得不解決電子郵件之間的延遲問題,直到找到適合我們的電子郵件主機的電子郵件。我們最終在電子郵件之間有 1.2 秒,所以這可能是一個很好的起點。
我認為有一些電子郵件主機專門處理批量郵件,所以如果你收到其中之一,它可能不是問題。
此外,如果您託管自己的電子郵件,這可能不是問題。如果您確實託管自己的郵件,您可以選擇將郵件放到取件目錄中,然後您可以隨心所欲地將其全部轉儲到那裡,然後讓電子郵件服務按照自己的節奏來取件。
編輯:這是添加到配置文件以設置拾取目錄的設置
<system.net> <mailSettings> <smtp from="support@test.com" deliveryMethod="SpecifiedPickupDirectory" > <specifiedPickupDirectory pickupDirectoryLocation="Z:\Path\To\Pickup"/> </smtp> </mailSettings> </system.net>