我有一個.NET服務處理後臺線程上的隊列,並且從隊列中的項目發出大量小型電子郵件高速率(例如,如果甚至可能,則爲每秒100條消息)。目前,我使用SmtpClient.Send()
,但恐怕會妨礙性能。在.NET中以高費率發送SMTP電子郵件
每次調用Send()
都會經歷一個打開套接字,執行SMTP對話(HELO,MAIL FROM,RCPT TO,DATA)和關閉套接字的完整週期。在僞代碼:
for each message {
open socket
send HELO
send MAIL FROM
send RCPT TO
send DATA
send QUIT
close socket
}
(編輯:這種說法大約SmtpClient.Send()
其實是假的,因爲我在我的答覆中解釋)
我認爲,以下僞代碼將是更優化:
open socket
send HELO
for each message {
send MAIL FROM
send RCPT TO
send DATA
}
send QUIT
close socket
應該以高速率發送電子郵件時,我關心的SmtpClient.Send()
的表現?我有什麼選擇來優化性能?
這幾條信息幾乎一樣,但對不同的收件人,或者是電子郵件的內容不同? – 2010-04-26 13:36:26
@Rob Levine:收件人相同,但內容不同。 – 2010-04-26 13:45:02
幾百秒?誰在地球上想要被埋在那麼多電子郵件之下? – 2010-04-26 13:52:34