2

目前我正在使用 PHPMailer 库编写一个 PHP 电子邮件脚本。我正在使用密件抄送为所有电子邮件地址发送群发邮件。

我希望每封电子邮件的邮件正文中都包含当前收件人的电子邮件地址。

下面是我的示例代码:

<?php
 require 'PHPMailerAutoload.php';
 $mail = new PHPMailer;
 $mail->isSMTP();                                      
 $mail->Host = 'smtp1.example.com;smtp2.example.com';  
 $mail->SMTPAuth = true;                                
 $mail->Username = 'user@example.com';                 
 $mail->Password = 'secret';                           
 $mail->SMTPSecure = 'tls';                         
 $mail->Port = 587;                               
 $mail->setFrom('from@example.com', 'Mailer');
 $mail->addAddress('noreply@example.com');

 $arrMail [] = array('bcc1@example.com','bcc2@example.com'); 

 for($i=0;$i<count( $arrMail);$i++)
 {
     $mail->addBCC($arrMail[$i]);
     $htmlversion = 'Hello '.$arrMail[$i].' !'.
 }


//  $htmlversion = 'Hello <email_id needed here> !'.

  $mail->Body    = $htmlversion;
  $mail->AltBody = $textVersion;   

      if(!$mail->send()) 
      {
        echo 'Message could not be sent.';
        echo 'Mailer Error: ' . $mail->ErrorInfo;
      }
      else
      {
        echo 'Mail sent';
      } 

问题:如果bcc1@example.com收到电子邮件,其邮件正文应包含他们的电子邮件地址。目前,我正在为每个收件人获取邮件正文中的第一个电子邮件地址。

注意:To我不想像其他页面中提到的那样逐一发送邮件。

也可以通过使用一些会话或数据库逻辑来实现吗?

我正在使用php 5.5.9.

4

1 回答 1

0

您的代码重用了相同的电子邮件地址,因为您没有将邮件正文的创建放入循环中。如果您使用循环,那么您也不需要密件抄送。

$arrMail [] = array('bcc1@example.com', 'bcc2@example.com'); 
$total = count($arrMail);

for($i = 0; $i < $total; $i++) {

    $email = $arrMail[$i];
    $htmlversion = "Hello $email !";

    $mail->Body = $htmlversion;
    $mail->AltBody = $textVersion;
    $mail->AddAddress($email);

    if (!$mail->send()) {
       echo 'Message could not be sent.';
       echo 'Mailer Error: ' . $mail->ErrorInfo;
    } else {
       echo 'Mail sent';
    }
}

我不想像其他页面中提到的那样使用 To 一个一个地发送邮件。

不幸的是,密件抄送本质上会向多个收件人发送相同的电子邮件。如果您想为每个人定制每封电子邮件,您必须向他们发送单独的电子邮件。

于 2016-10-03T10:52:26.203 回答