2009-10-09 57 views
5

我使用的是php和mysql。使用php郵件功能有沒有限制?

我打算髮送10k ++(10萬以上)的電子郵件來更新我的訂閱者,這是我第一次發送它們。我將使用PHP的郵件功能,基本上這裏是我會做:

首先從數據庫中獲取的數據:

Select name, email FROM data 

之後,使用while循環發送數據:

while($r = mysql_fetch_assoc($exe)){ 
    ... 
    if($mail){ 
     echo "success<br>"; 
    } else { 
     echo "failed<br>"; 
    } 
} 
echo "Sent all"; 

我包含if .. else語句,以確保每封電子郵件都能成功發送。有什麼我需要照顧的嗎?發送給10K ++用戶時會有什麼問題嗎?

您將要發送的電子郵件數量是否有限制?

+1

相關 - http://stackoverflow.com/questions/788596/whats-the-best-approach-to-sending-email-to-hundreds-of-recipients-from-a-zend-f – warren 2009-10-09 11:46:33

回答

4

電子郵件數量沒有限制,但是PHP腳本有時間限制。請參閱php.ini中設置的max_execution_time,通常爲20或30秒。如果你不知道,使用phpinfo()來找出它。

此外,您應該採取一些措施來防止用戶收到太多的電子郵件。你應該將它們標記爲已發送,所以如果你不小心啓動腳本兩次,它們不會收到雙重帖子。

除此之外,你應該注意到,php的郵件功能本質上沒有被優化。您可以嘗試一些庫,例如phpmimemessage或其他任何庫,這會允許您執行一些緩存操作,例如其他許多功能。

+0

Omg,I不知道。那麼,您通常使用「phpmimemessage」發送10k ++電子郵件?你正在使用哪個庫? – bbtang 2009-10-09 11:11:46

+0

我做了更復雜的事情,但是,我正在使用這個庫來做羣發郵件(通訊)。 Mimemessage現在已經很老了,現在有更好的圖書館,看到其他答案,或谷歌爲他們。我的腳本在CLI的後臺運行,但沒有時間限制。 – Palantir 2009-10-09 11:19:48

9

請注意本說明從mail documentation

注:值得注意的是,郵件()函數是在循環不適合較大的電子郵件數量。此功能爲每封電子郵件打開和關閉SMTP套接字,效率不高。
要發送大量電子郵件,請參閱»PEAR :: Mail和»PEAR :: Mail_Queue軟件包。

+0

你使用什麼庫發送電子郵件?梨::郵件??我將研究那些東西。謝謝 – bbtang 2009-10-09 11:12:35

+0

使用pear :: Mail_Queue,而不是郵件 – 2009-10-09 11:17:14

2

您應該建立一個發送/失敗的電子郵件隊列,以便您可以嘗試重新發送失敗的嘗試,並避免在發生錯誤時重新發送電子郵件。

不要創建嘗試通過郵件發送電子郵件10K的循環()

而且,最有可能的限制,你會打將是您的ISP或主機的郵件服務器。