2011-03-03 60 views
6

撇開垃圾營銷的鄙視,我需要發送大約15,000封電子郵件給客戶。我的同事試圖通過PHP郵件循環發送它們,但顯然它很快就被卡住了。是否有傳統的(即通過PHP腳本)來快速完成這項工作?如果沒有,你怎麼建議我這樣做(也許通過exec)沒有太多的開銷?PHP:批量發送大量電子郵件

謝謝!

+1

Swift梅勒? http://swiftmailer.org/ – lam3r4370 2011-03-03 10:33:59

回答

4

我已經使用PEAR的Mail_Queue一次排隊了200,000多封郵件。即使使用自定義內容,填充數據庫也非常簡單快捷,然後一個相當簡單的腳本可以發送大約250次 - 如果平均負載不太高。然後它循環併發送下一批。

你不會發送任何比通常可能的更快的速度,但它會做到沒有任何問題。

tutorial爲您提供了幾乎所有您需要的東西 - 只需循環「send_messages.php」腳本(從命令行更好)直到數據庫隊列爲空。

+0

謝謝,我一定會試一試。 – Gal 2011-03-03 11:27:31

0

您是通過CGI運行它還是作爲命令行上的腳本運行?最好在命令行上將它作爲腳本運行。

如果您認爲它卡住了,請嘗試運行set_time_limit(0);以避免PHP退出執行時間過長。

+0

我正在尋找任一解決方案。設置時間限制仍然需要很長時間才能發送。我應該在命令行上使用什麼腳本? – Gal 2011-03-03 10:12:45

+0

你不需要改變任何東西。 PHP腳本可以在命令行上運行。 – 2011-03-03 10:28:32

1

無論您如何實施即時交付:這將是一個漫長的過程,總是會受到干擾,您不能重新啓動交付並向兩千個客戶發送兩次相同的消息。

我相信一個可靠的系統必須使用隊列。主腳本只是將收件人添加到隊列中,然後您有一個輔助進程從隊列中選取項目,讓它們發送並最終將其標記爲已發送。這個輔助進程可以手動啓動(可能來自命令行)或通過cron選項卡啓動。

我從來沒有用過,但我有這個在我的書籤:http://ledscripts.com/free/php/phpledmailer

+0

-1:MTA ** IS **排隊系統。 – symcbean 2011-03-03 13:04:57

+0

@symcbean - 巴黎是法國的一個城市。你的downvote和評論有任何與這個問題的實際關係? – 2011-03-03 15:04:34

+0

通常你會給出很好的建議 - 但是它幾乎不可能在沒有使用排隊系統的情況下發送郵件 - 爲什麼當你已經有一個寫得很好的排隊系統的時候在PHP中實現更多的排隊 - 通常有許多現成的添加工具用於管理隊列? – symcbean 2011-03-04 08:35:31