#php #email #bcc
#php #Адрес электронной почты #bcc
Вопрос:
В настоящее время я работаю над скриптом электронной почты 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
2. Причина, по которой я это сделал
bcc
, — скрыть другие письма.3. возьмите все электронные письма в массив и запустите цикл foreach для этого массива.
4. @RahulDambare Не могли бы вы уточнить, как я должен получить идентификатор электронной почты в теле для конкретного получателя после сбора их в массив?
Ответ №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';
}
}
Я не хочу отправлять почту по одному, используя, как указано на других страницах.
К сожалению, BCC по самой своей природе отправляет одно и то же электронное письмо нескольким получателям. Если вы хотите настроить каждое электронное письмо для каждого человека, вы должны отправлять им отдельные электронные письма.
Комментарии:
1. Причина, по которой я использую
bcc
, заключается в том, что один получатель не может видеть почтовый идентификатор другого получателя. Также о чемCc
?2. @Hiranya Хотите вы этого или нет, невозможно использовать BCC или CC, если вы хотите изменить текст письма для каждого получателя. Весь смысл BCC или CC означает копирование одного и того же электронного письма каждому человеку.