[英]Send mass emails from PHP
我的網站上有80,000個用戶,而且我最近偏離了我一直在使用的論壇腳本,並且構建了一些非常簡單的東西,同樣適用(論壇腳本對於我的簡單站點來說太過臃腫和資源密集) )
我唯一丟失的是能夠向我的所有成員發送電子郵件。
所以我想找一個自己做的腳本。 環顧四周(包括這里的問題)我決定使用Swift Mailer是個好主意。
然而,我已經通過所有文檔,無法看到如何發送說“100一次”,我不知道如何去做。
簡而言之。 我有一個管理面板,其中包含兩個輸入“subject”和“message”的表單。 當我點擊提交什么是最安全的方式讓我發送80,000封電子郵件而不會崩潰我的服務器或被標記為垃圾郵件?
我是一個非常強大的專用服務器,所以沒有與共享服務器相關的問題。
提前感謝任何建議!
安全選項是一個接一個地發送電子郵件。 我通常發送不超過10封電子郵件10分鍾。 cron發出的簡單腳本就是您所需要的。
一次發送許多電子郵件是一回事,但讓它們全部交付並通過服務器過濾器是不同的東西......
像Swiftmailer這樣的類可以選擇群發電子郵件。
這是我的想法......假設你是托管在linux類型的盒子上。 在不知道您的代碼的情況下,這當然是最低限度的。 在服務器上創建一個名為sendmails.php的文件
<?
loop through email addresses however you do it
{
usleep(250000); // sleep for quarter of a second
mail('user@example.com', 'My Subject', 'message');
}
?>
保存它,然后在另一個文件startemails.php中,您可以在瀏覽器中打開它
<?
system("&php sendmails.php");
?>
即使服務器超時,系統調用仍應完成其工作。 使用此方法,80,000封電子郵件應發送約6小時。 改變睡眠時間,花費更多或更少的時間。
而不是Cron,你需要一個守護進程,Swiftmailer不能輕易做到這一點。 問題是這樣的:你可以有一個Cronjob觸發器Swiftmailer讓我們說每5分鍾一次,但是如果它沒有完成發送10000封郵件會怎么樣? 它可能會啟動另一個進程,因此您可能最終會嘗試在隊列中發送相同的文件。
我使用一種解決方法並創建了一個簡單的PHP守護進程(一個bash腳本也可以正常工作),它不斷檢查隊列中是否有電子郵件; 如果是這樣,它啟動Swiftmailer並發送1封電子郵件。 (將swiftmailer限制設置為1)。 然后daemonscript等待0.5秒,然后再次檢查。
如果需要,Swiftmailer可以處理多個隊列(您需要為每個隊列啟動第二個deamon進程)。
不幸的是,Swiftmailer沒有'send /'文件夾,所以一旦發送它們就會消失。 因此,如果出現錯誤,您不能簡單地將文件從“發送/”移回隊列以重新發送。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.