2014-03-12 180 views
1

我需要每隔一天發送最多約300封批量電子郵件,所以我正在考慮使用PHP mail()函數爲我製作一個PHP應用程序。使用PHP發送每天大約300封電子郵件(每天使用PHP)

我需要能夠在其地址對應的地址的域名/鏈接的郵件正文中的變量和電子郵件只發送一次,這就是爲什麼我不使用Mailchimp,因爲我不想要一個取消訂閱按鈕或電子郵件上的任何類似內容。

這是可行的使用PHP的郵件(),有什麼我應該做的,以避免被列入黑名單?

+1

如果您發送的是批量電子郵件而您沒有取消訂閱鏈接,那麼您將會加劇用戶的使用並可能違反整個法律。 Mailchimp不會將這些添加爲混亂,他們添加它們是因爲它們有意義。 – tadman

+0

實際上[非法](http://en.wikipedia.org/wiki/CAN-SPAM_Act_of_2003#Unsubscribe_compliance)在沒有退訂選項的情況下定期向用戶發送電子郵件。 – Marty

+0

但是,如果我只向他們發送一封電子郵件(如我的問題),那麼取消訂閱按鈕有什麼意義?這是因爲鏈接建立中斷,我通知網站管理員他們網站上的鏈接已斷開,並給他們更換。我只發送一次給網站管理員,他們再也沒有收到我的來信。 – dlofrodloh

回答

1

你可以絕對實現使用PHP的mail()函數。但是,如果您打算爲您的電子郵件使用HTML格式,我強烈建議您使用其中一個準備好的庫。我最喜歡的是SwiftMailer

當涉及到黑名單,最好的辦法就是使用其中的任何一個:

  • 使用一個明確列入白名單的代理
  • 使用不同的代理爲每封電子郵件,作爲提供給您的旋轉儘可能多的代理
  • 確保您有不同的您的電子郵件

後者可實現是這些方法中的任何一個的發送之間的延遲:

  • 創建一個腳本,只是發送消息

foreach($recipients as $rcp) { 
    mail($rcp, 'subject', 'content'); 
    sleep(rand(1,20)); 
} 

之間休眠一段時間這將從您的隊列發送消息,並留下一個變延遲在兩者之間1到20秒。

如果您使用諸如此類的方法,請確保您的最大執行時間配置正確,否則腳本將在一段時間後死亡。

ini_set('max_execution_time', '3600'); 

這將讓您的腳本運行最多一個小時。

您的另一種選擇:

  • 使用定期執行腳本

在這種情況下,cron作業,你可以在你的當前收件人寫入文件和增加的每一次執行該計數器腳本。

我覺得在你的情況下,以前的方法會更合適。

請注意

發送的垃圾郵件可以在一定條件下是非法的。正如您對問題的評論中所討論的那樣,您應始終在消息中提供取消訂閱選項(例如鏈接)。

另請注意,很難確定哪些收件人服務器使用哪種方法來識別可疑客戶端/客戶端主機。使用上面提供的方法不能保證目標服務器不會將您列入黑名單。

+0

很酷,謝謝你的信息。我將在腳本中使用睡眠方法,這是個好主意。再次記錄,這是針對斷開的鏈接建設,我在其網站上通知網站管理員斷開的鏈接。我只發送一封電子郵件給他們,然後他們再也沒有收到我的來信,所以取消訂閱鏈接不適用。這只是爲了避免我手動發送電子郵件。 – dlofrodloh