2009-12-27 31 views
1

我剛剛超過100個聯繫人,我需要通過電子郵件發送至寄過來的100郵箱()

while ($row = mysql_fetch_array($result)){ 

    $message = "Hello ".$row['first_name'].", \r\n"; 
    $message = $message.$_POST['message']; 

     if (mail($row['email_address'], $subject, $message, $headers)){ 
      $sent ++; 
     }else{ 
      $error ++; 
     } 
    } 

請問這樣跑好嗎?我看了其他方法(梨,smtp),但想知道這是否會運行好嗎?

感謝

回答

3

我最近使用郵件功能發送給100多個收件人。所以是的,它會工作。

那裏有一些問題的功能,但郵件調用之間略有延遲(100毫秒)有助於解決這個問題。

+0

我該如何編碼這個延遲?謝謝 – user195257

2

這將在很大程度上取決於你的服務器配置和限制您的提供商所強加的一個可能的「每X電子郵件的最大數量」。 Mail()不是完美的批量郵件命令,但是出於一般經驗,我會說任何高達幾百封郵件的郵件都可能正常工作。

請記住記錄直接發送失敗的地址(可能由於此類限制),併爲剩下的地址設置退回地址。

0

如果你不知道你的郵件服務器會處理這個號碼,你可以將工作分成更小的一組地址,並將它們添加到一個臨時存儲器(即MySQL表)中。

然後在每個頁面請求上,您可以獲得一些地址,發送消息並將它們從臨時表中刪除。

2

對於時間延遲,使用sleep(int secs)或usleep(int microseconds)。

您應該在每個循環的循環結束時使用usleep進行小的延遲,或者每隔10個郵件休眠一次。取決於您的郵件服務器容量。