2011-08-09 41 views
3

我們有一個Windows服務來檢查是否符合某些條件,我們會發送一封電子郵件給客戶。我們每天會收到大約50封電子郵件。我的問題是,單獨發送電子郵件(即每次滿足條件,觸發sendmail函數)或排隊所有電子郵件並批量發送更好嗎?由於性能原因,批量發送更好嗎?但是,我們每天只發送大約50封電子郵件,所以無關緊要。如果電子郵件應該批量發送,你將如何排隊電子郵件?你爲什麼要批量發送電子郵件,而不是單獨發送?

非常感謝

+4

「但我們每天只發送約50封電子郵件,所以沒關係太多」 - 問道並回答。 –

+0

最好只是將電子郵件發送到郵件服務器,讓它處理排隊的細節。 –

+0

@Joel Mueller,目前我們每天有大約50封電子郵件,但未來可能會增加。 :) – StarCub

回答

3

通常對於配料多封電子郵件到一個單一的電子郵件的原因是爲了不刺激接受者,而不是出於性能的考慮。全天50封電子郵件可能非常煩人,並且很快會導致收件人「調出」,而包含所有相關通知的單個電子郵件可能更容易消化。

至於如何重新排列電子郵件,最好是如果您可以修改服務本身以將傳出的電子郵件存儲在文件或緩衝區中,並且只發送該文件或緩衝區的內容一次已達到某個閾值 - 是時間閾值或大小閾值。

+1

我理解爲50封郵件總數,而不是每個收件人50封郵件。 – CodesInChaos

+0

對不起,我應該說清楚。這50封電子郵件很可能會發送給50個不同的客戶。 – StarCub

+0

啊。我爲我的誤會道歉。在這種情況下,無視我的答案。 (我將在此放棄,以免其他人以同樣的方式誤解此問題。) –

2

如果您每天只發送50封電子郵件,這一點完全沒有實際意義。

就實際服務器而言,SMTP並不關心你是批量發送還是單獨發送,它只是通過電子郵件積壓隊列發送出去。

如果您需要連續查詢數據庫以發送電子郵件,或者想要查詢您的數據庫以批量發送電子郵件(以減少數據庫查詢),唯一真正值得關注的問題應該是。

+0

Windows服務本身的性能如何?假設我有一個循環來檢查條件,並且條件滿足,我發送一封電子郵件。這可以優化嗎?謝謝。 – StarCub

+0

無論你選擇實現你的Windows服務,它都歸結爲對'SendMessage'或'SendToMSPickupDirectory'或其某些變體的X調用。但是,你的服務不應該真的檢查條件。您的數據庫查詢應該爲該服務提供一組要發送的良好電子郵件,這是數據庫查詢選擇發送的內容。通常情況。 – Tejs

0

忽略性能,還有一件事需要記住:用戶在滿足條件時是否需要該電子郵件?如果是這樣的話,甚至不要考慮排隊消息,除非你幾乎是基於常量清空隊列。

否則,這是真的取決於你。每天發送50封電子郵件不會破壞您的服務器,因此我不擔心其性能。另一方面,如果您和您的用戶分批發送電子郵件很方便,請繼續。