2011-04-15 60 views
0

这里发送批量电子邮件是我的功能问题与使用PHP

function send_edm ($u_email_sender_name, $u_content, $u_mail, $u_subject, $edm_id) { 
     foreach ($edm_email as $value) { 

      $this->rege = Route :: loadClass('core_route_regclass'); 
      $this->sendmail = $this->rege->phpmailer(); 

      $this->sendmail->Mailer = "mail"; 
      $this->sendmail->IsHTML(true); 

      $email_sender = $u_email_sender_name; 
      $mail = $config->company_email; 

      $subject = $u_subject; 
      $fromwhere = $email_sender; 
      $content = $u_content;  

      $this->sendmail->From = $fromwhere; 
      $this->sendmail->FromName = $fromwhere; 
      $this->sendmail->AddAddress($value["email"]); 

      $this->sendmail->Subject = $u_subject; 
      $this->sendmail->CharSet = "utf-8"; 
      $this->sendmail->Encoding = "base64"; 

      $this->sendmail->Body = $u_content; 
      $this->sendmail->AltBody = "This is the body in plain text for non-HTML mail clients"; 

      if(!$this->sendmail->Send()) 
      { 
       echo "Message could not be sent. <p>"; 
      } 

     } 
} 

,如果我送过来1000或更多的电子邮件使用该功能来发送,不会是任何错误发生可能会导致发送的中断处理?如何提高使用PHP发送电子邮件的可靠性?

感谢

回答

0

对于大量电子邮件的发送,最好是使用PEAR::Mail_Queue包。

此包提供了处理邮件队列管理的类。它可以在后台加载,保存和发送保存的邮件,并备份一些邮件。

0

对这个问题的回答取决于很多与你的代码无关的事情。例如,您的主机是否限制了您在特定时间段内可以发送的电子邮件数量?您是否提前验证了所有输入?我们在谈论多少mpre比1000? 1000次迭代循环比1m迭代循环稳定得多。服务器是否有足够的CPU周期带宽来完成整个迭代?

您可能需要考虑使用工作队列来处理与网站本身分开的大型处理作业。