Я пытаюсь отправить новостную рассылку с PHPMailer, защищая конфиденциальность моих клиентов.
Сначала я установил конфигурацию приемника с mail->addAddress('customerEmail']);
но я узнал, что отправляя его таким образом, каждый получатель мог видеть адреса электронной почты подписчиков других клиентов.
Я изменил addAddress
в mail->addBCC('customerEmail']);
так что он не показывает каждый адрес электронной почты (фактически, теперь он даже не показывает адрес электронной почты получателя, на который он отправляется), но таким образом, если кто-то хотел ответить на электронную почту , их ответ также будет отправлен остальным подписчикам …
Какой для вас лучший вариант для решения этой проблемы?
Почтовые серверы не используют заголовки сообщений для доставки сообщений. Когда вы отправляете электронное письмо, ваш почтовый клиент поддерживает разговор *, например:
EHLO example.com
MAIL FROM: [email protected]
RCPT TO: [email protected], [email protected], [email protected]
DATA
From: Me <[email protected]>
To: Customers <[email protected]>
Subject: Important info
Dear Blah,
Blah blah.
Regards,
.
(*) Это является разговор, потому что он включает ответ сервера на каждую команду, но я пропустил эту часть.
Что действительно имеет значение, так это информация, представленная в конкретных командах до DATA
блок. Конечно, большинство почтовых инструментов создают заголовки, соответствующие адресам в инструкциях по обработке, но такие заголовки предназначены только для информационных целей и не должны быть идентичными. Фактически, именно так и работает Bcc: вы указываете своей почтовой программе, что нужно доставлять электронную почту на такой адрес, но пропускаете ее из заголовков.
Так:
Если вы спрашиваете мое мнение, всегда приятно знать точный адрес электронной почты, на который отправляется информационный бюллетень — у многих из нас есть более одного адреса. И на самом деле обязательно отправлять персонализированные сообщения, если вы хотите предлагать автоматические ссылки для отмены подписки.
Как мне посоветовали, лучший способ управлять новостной рассылкой — отправлять электронную почту индивидуально каждому клиенту, хотя это означает небольшое увеличение времени отправки. Таким образом, вы можете предлагать автоматические ссылки для отмены подписки и другие функции, которые в противном случае вы бы не смогли.
Чтобы добиться этого, я просто сделал простой цикл получения адресов из моей базы данных:
$sql = "SELECT `email` FROM `emails`";
$statement = $db->prepare($sql);
$statement->execute();
while ($fila = $statement->fetch()) {
if(!empty($fila['email'])){
$mail->addAddress($fila['email']);
$success = $mail->Send();
$mail->clearAllRecipients(); //Don't forget this!
}
}
Метод clearAllRecipients();
это очень важно, поскольку именно он очистит получателя последнего круга, чтобы в разделе «до» электронного письма не отображались все получатели вашей рассылки.