目前我正在使用PHPMailer`库处理PHP电子邮件脚本。我正在使用BCC向所有电子邮件地址发送群发邮件。
我希望每封电子邮件都包含邮件正文中当前收件人的电子邮件地址。
以下是我的示例代码:
<?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
。
答案 0 :(得分:0)
您的代码重复使用相同的电子邮件地址,因为您没有在邮件循环中创建邮件正文。如果你使用循环,那么你也不需要BCC。
$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';
}
}
我不想使用其他页面中提到的逐个发送邮件。
不幸的是,BCC就其性质而言,会向多个收件人发送相同的电子邮件。如果您想为每个人自定义每封电子邮件,则必须向他们发送个人电子邮件。