我正在尝试使用PHPMailer发送简报,同时保护我的客户隐私。
首先我用mail->addAddress('customerEmail']);
设置接收器配置,但我发现以这种方式发送,每个接收者都可以看到其他客户的订阅者电子邮件地址。
我将addAddress
更改为mail->addBCC('customerEmail']);
,以便它不会显示每个电子邮件地址(实际上现在它甚至没有显示要发送给的客户的收件人电子邮件地址) ,但这样如果有人想回复电子邮件,他们的回复也会被发送给其他订阅者......
什么是面对这个问题的最佳选择?
答案 0 :(得分:1)
电子邮件服务器不使用邮件标头来传递邮件。当您发送电子邮件时,您的电子邮件客户端会保持对话*,如下所示:
EHLO example.com
MAIL FROM: mail@example.com
RCPT TO: info@example.net, customers@example.org, john@example.com
DATA
From: Me <webmaster@example.com>
To: Customers <whatever@example.com>
Subject: Important info
Dear Blah,
Blah blah.
Regards,
.
(*)它是一个会话,因为它包含服务器对每个命令的响应,但我省略了该部分。
真正重要的是DATA
块之前的特定命令中提供的信息。当然,大多数邮件工具都会创建标题以匹配处理说明中的地址,但这些标题仅供参考,并且不需要相同。事实上,Bcc实际上是如何运作的:你指示你的邮件程序将电子邮件发送到这样的地址,但是从标题中省略它。
所以:
如果您征求我的意见,我们总是很高兴知道发送简报的确切电子邮件地址 - 我们中的许多人都有多个地址。如果您想提供自动取消订阅链接,那么发送自定义消息实际上是强制性的。
答案 1 :(得分:0)
据我所知,管理简报的最佳方式是将电子邮件单独发送给每位客户,尽管这意味着发送时间略有增加。通过这种方式,您可以提供自动取消订阅链接和其他您无法使用的功能。
为了实现这一点,我只是简单地从我的db中获取地址:
$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();
非常重要,因为它是清除最后一圈收件人的人,以便“#{0}电子邮件的部分不会显示您的所有简报收件人。