Я отправляю электронные письма с помощью онлайн-формы через phpmailer и пытаюсь использовать для каждого цикла, чтобы настроить тело, в частности, для кнопки отмены подписки. В настоящее время я использую только два моих личных письма без шифрования для целей тестирования. Я добавлю шифрование, как только это действительно начнет работать так, как должно.phpmailer для каждого цикла пользовательского органа
Мой код PHP:
$mail = new PHPMailer;
/*php mailer settings*/
//All settings for php mailer here - working fine, email sends
/*for each loop to send bcc to each email and customize body*/
//array of emails - really loading from database with while loop
$subs_email("[email protected]","[email protected]");
foreach ($subs_email as $email) {
$mail->addBCC($email);
$mail->Body = '<p>This is the body text</p><a href="http://www.website.com/unsubscribe.php?email='.$email.'">Unsubscribe</a>';
}
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
}
Использование вариации выше электронной почты кода будет посылать (BCC) для двух писем в массиве, но все письма получат ту же отписки адрес ссылку/электронной почты. Примечание: email1 @ используется оба раза.
Email на адрес электронной почты 1: Текст кузова выглядит хорошо.
<a href="http://www.website.com/[email protected]">Unsubscribe</a>
Отправить адрес электронной почты 2: текст тела хорошо выглядит.
<a href="http://www.website.com/[email protected]">Unsubscribe</a>
Это, очевидно, не то, что я хочу. Когда я тестирую и просто выхожу за каждым текстом цикла на пустой странице, он показывает каждую настраиваемую ссылку на отмену подписки, как и следовало бы, по одному для каждого адреса электронной почты.
Любая помощь приветствуется, и дайте мне знать, если вам нужно больше или.
рабочий код создается на основе ответа Главный вопрос использования addBCC вместо addAddress
foreach ($subs_email as $email) {
$mail->addAddress($email);
$mail->Body = '<p>This is the body text</p><a href="http://www.website.com/unsubscribe.php?email='.$email.'">Unsubscribe</a>';
if (!$mail->send()) {
echo "Mailer Error" . $mail->ErrorInfo . '<br />';
break; //Abandon sending
}
// Clear all addresses and attachments for next loop
$mail->clearAddresses();
}
так .. вы отправляете почту в пределах цикла foreach или после? потому что, если вы его отправите, ваше тело и ссылка будут установлены в соответствии с последним повторным письмом. Если вы отправляете его в цикле foreach, должно быть что-то еще, что вы не разделили, что вызывает ошибку. – Cashbee
@Cashbee Отправляется после. Таким образом, ваш комментарий имеет смысл. Я просто попробовал это снова с помощью send() в цикле, но теперь каждый адрес получает два сообщения электронной почты: один с правильным адресом электронной почты и один с другим ... Я обновил свой код до того, что я изначально делал. –