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。
这是我的邮件脚本,我正在使用 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。