在PHP邮件程序中发送多个邮件

Ami*_*tna 0 php oop email phpmailer

我一直在编写一个使用PHP邮件邮件发送电子邮件的触发器.代码的问题在于它将多个邮件发送给单个收件人.我甚至试过使用function singleTo但是即便看起来也没用.

$mail = new PHPMailer();

for($i = 0; $i <= sizeof($emailid); $i++)   {
    $mail->WordWrap = 50;                              
    $mail->IsHTML(true);                                 
    $mail->SingleTo = true;
    $mail->AddAddress($emailid[$i],$name[$i]);
    $mail->Subject = 'Some Subject';
    $mail->Body    = "Some Body";
    $mail->AltBody = "Some Body";

    $errornumber[$i] = 1;

    if(!$mail->Send()) {
       $errorinfo[$i] = $mail->ErrorInfo;
       $errornumber[$i] = 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*c B 11

AddAddress()只需在地址数组的末尾添加一个新地址.如果您想发送单个电子邮件,每个地址,您必须在每次迭代时清除该列表,例如

for(...) {
   $mail->AddAddress(...);
   $mail->send();
   $mail->ClearAddresses();  // <---you need this line.
}
Run Code Online (Sandbox Code Playgroud)

如果单个用户正在接收多封电子邮件,那么您需要一些代码来检测您何时发送过一封电子邮件,例如:

$sent = array();
for(...) {
   if (isset($sent[$email[$i]])) {
      continue; // check if sent already, skip if so
   }
   ...
   if ($mail->send()) {
     $sent[$email[$i]] = true; // flag address as already sent
   }
}
Run Code Online (Sandbox Code Playgroud)