在PHPMailer中将不同消息发送给不同收件人的正确解决方法是什么

时间:2019-02-06 06:17:50

标签: php phpmailer

我正在尝试向多个不同的密件抄送收件人发送电子邮件。 每个收件人都有一个相同的正文,但他还需要在其中接收自己的电子邮件。

我正在遍历JSON以使用$ mail-> addBCC()函数添加电子邮件。 而且我需要发送给每个用户的$ body包含自己的地址。

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\SMTP;

require 'src/Exception.php';
require 'src/PHPMailer.php';
require 'src/SMTP.php';

//*** -> $allUsers is a JSON

function sendemails_ex($allUsers, $subject, $body)
{
            $emailFrom = "noreply@slandergold.com";
            $emailFromName = "slandergold.com";

            if ($allUsers=="" || $subject=="" || $body=="")
            {
                exit();
            }

            $smtpUsername = "abcdKLARK"; 
            $smtpPassword = "1t%y$R5$4";

            $mail = new PHPMailer;

            $mail->CharSet = 'UTF-8';

            $mail->isSMTP(); 
            $mail->SMTPDebug = 0; 
            $mail->Host = "mail.slandergold.com";

            $mail->Port = 26; //587; // TLS only
            $mail->SMTPSecure = false; //'tls'; // ssl is depracated
            $mail->SMTPAuth = false; //true;
            $mail->Username = $smtpUsername;
            $mail->Password = $smtpPassword;

            $mail->setFrom($emailFrom, $emailFromName);

            $arr = json_decode($allUsers,true);

            foreach($arr as $item) 
            { 
                $mail->addBCC($item['Email'], $item['Fullname']);
            }

            $mail->isHTML(true);                                 
            $mail->Subject = $subject;

            // ***********
            // is there a way to make it 
            // so that every individual BCC recipient 
            // will get a body with the individual addition of: 
            // $userEmail = ?
            // $body."<br />This is your email: ".$userEmail;
            // ***********

            $mail->msgHTML($body);

            $mail->AltBody = 'HTML messaging not supported';

            if(!$mail->send())
            {
                echo "Mailer Error: " . $mail->ErrorInfo;
            }
            else
            {
                echo "Message sent!";
            }
}

1 个答案:

答案 0 :(得分:1)

正如评论所说,您不能使用密件抄送将不同的电子邮件发送给不同的收件人。您需要分别发送每条消息,the mailing list example provided with PHPMailer中提供了确定的发送方法。项目Wiki中还有关于如何有效发送到列表的注释。