Phpmailer - 循环时获取自定义 headers 的多个条目

Phpmailer - Getting multiple entries of custom headers while looping

这是我的邮件脚本,我正在使用 for 循环发送多封电子邮件。

if(isset($_POST['submit'])){

 require ("vendor/autoload.php");
 $fr_email = $_POST['fr_email'];
 $from = $_POST['from'];
 $reply_to = $_POST['reply_to'];
 $sub = $_POST['sub'];
 $tm = $_POST['email'];

 
 $str = "<117418239>
<128422057>";
$listid= explode("\n",$str);


 $mail = new PHPMailer\PHPMailer\PHPMailer;

for ($x = 2; $x > 0 ; $x--){

$mail->isSMTP();
 $mail->SMTPOptions = array(
 'ssl' => array(
 'verify_peer' => false,
 'verify_peer_name' => false,
 'allow_self_signed' => true
 ));

 $mail->SMTPDebug = 0;
 $mail->Host = 'hostname';
 $mail->Port = 25;
 $mail->SMTPAuth = false;
 $mail->Username = 'uname';
 $mail->Password = 'pwd';
 $mail->SMTPSecure = 'tls';
 $mail->CharSet = 'UTF-8';
 $mail->Encoding = 'base64';
 $mail->isHTML(true);

 $mail->setFrom($fr_email,$from);
 $mail->AddReplyTo($reply_to,$from);
 $mail->Sender=$fr_email;
 $mail->Subject=$sub;
 $mail->XMailer = ' '; 

 $mail->addCustomHeader('List-ID', $listid[$x-1]);

 $body = $_POST['body'];
 $mail->Body=$body;
 //$mail->AltBody=$altbody;
 $mail->addAddress($tm);



 if ($mail->send()) {
 echo "\nMessage sent\n";
 }
 else {
 echo 'Mailer error: ' . $mail->ErrorInfo;
 }

 $mail->clearAddresses();
 $mail->SmtpClose();
 
} // for loop close
 }


我正在使用“addcustomheader”函数添加列表 ID header 字段。因为我是 运行 一个循环,我在我的电子邮件 header 中收到列表 ID 字段的多个条目。 [即使我在每次迭代后关闭我的 smtp 连接]

第一封电子邮件

List-ID: <117418239>

第二封电子邮件

List-ID: <117418239>
List-ID: <128422057>

有没有办法在每次循环迭代后清除自定义 headers,比如清除电子邮件地址

是的。请注意方法的名称 addCustomHeader – 它 添加 一个 header,并且不会替换现有的。要解决此问题,请在循环内发送后调用 clearCustomHeaders()。参见 the docs on this method