2011-04-15 74 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週期帶寬來完成整個迭代?

您可能需要考慮使用工作隊列來處理與網站本身分開的大型處理作業。