Как получить текущий идентификатор электронной почты в теле, используя PHP Mailer

В настоящее время я работаю над сценарием электронной почты PHP с использованием библиотеки PHPMailer. Я отправляю массовую почту, используя 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,

1

Решение

Ваш код повторно использует тот же адрес электронной почты, потому что вы не поместили создание почтового тела в цикл. Если вы используете цикл, то вам также не нужен 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';
}
}

Я не хочу отправлять почту по одному, используя To, как указано на других страницах.

К сожалению, BCC по своей природе рассылает одно и то же письмо нескольким получателям. Если вы хотите настроить каждое электронное письмо для каждого человека, вы должны отправить ему отдельные электронные письма.

0

Другие решения

Других решений пока нет …