一个简单的PHP For Each循环可以处理发送电子邮件到10,000吗?

时间:2016-03-11 02:53:53

标签: php email sendgrid

我为每个循环使用PHP向10,000封电子邮件发送电子邮件。有什么理由说这不是处理10,000封电子邮件的最佳做法吗?这个执行会挂起吗?我想确保这会发送给所有电子邮件。

 foreach($thecustomer as $key => $value){
      $to = $customeremail; 
      $fromemail = $shopowner . " <" . $email . ">"; 
      $subject = $subject;
      $message = $body;
      $headers = "From:" . $email . "\n";
      $headers .= "MIME-Version: 1.0\n";
      $headers .= "Content-Type: text/html; charset=ISO-8859-1\n";
      mail($to,$subject,$message,$headers);
 }

1 个答案:

答案 0 :(得分:2)

是的php没有问题,但请注意mail()将创建一个新的邮件服务器连接,发送邮件,并再次关闭连接,这意味着你也将打开&amp;关闭连接10,000次!虽然PEAR::MailPEAR::Mail_Queue包将在一个连接中完成所有操作,因此速度更快

引用mail()文档:

  

注意:
  值得注意的是mail()函数不适合循环中的大量电子邮件。此功能为每封电子邮件打开和关闭一个SMTP套接字,效率不高   要发送大量电子邮件,请参阅»PEAR :: Mail和»PEAR :: Mail_Queue包。

还要确保你有足够的执行时间,你可以使用 set_time_limit(0);“永不超时”