php 邮件程序退订群发邮件

php mailer unsubscribe into mass email

我使用 php 邮件程序

require ('phpMailer/PHPMailerAutoload.php');

群发邮件。我循环我的数据库以获取电子邮件并将其添加到密件抄送。我想在每个主体中添加自定义取消订阅消息,但是当我尝试这样的事情时

foreach($list_mail as $db_mail) {
$unsub_email = ($db_mail[0]);
$unsubscribe1 = '<p><small>If you dont want to receive this, please click <a href="http://example.com/unsubscribe.php?email='; 
$unsubscribe2 = '">here</a></small></p>';
$email_text_unsub = $email_text . $unsubscribe1 . $unsub_email . $unsubscribe2;
$mail->Body = $email_text_unsub; }

我已将 URL 中最后列出的电子邮件放入每封电子邮件中。我知道如果我循环发送每封电子邮件(使用 $mail->send)是可能的,但我想发送一封群发电子邮件,但带有自定义正文。 有可能吗?

如果要向每个地址发送不同的邮件正文,则不能使用密件抄送。您必须发送与地址一样多的电子邮件。

正如@aurel.g所说,您必须发送单独的消息才能实现。

BCC 意味着所有收件人都会收到相同的邮件(因为只提交了一封邮件),因此没有机会针对每个收件人进行自定义。

PHPMailer 提供了一个 mailing list sending example 来展示如何进行实际发送;由你来设计一个退订机制来配合它。

如果你的主机不允许你发送足够的,是时候找一个更好的主机了。

正如其他人所说,如果您同时向多个收件人发送一封邮件,则邮件内容必须相同——这就是电子邮件的工作原理。这不是 PHP 或 phpMailer 的限制,它只是电子邮件的工作方式。

您的选择是:

  1. 向每个用户发送单独的邮件。正如您所说,这将导致您快速 运行 进入提供商的速率限制。您可能会更换提供者,但每个人都会有某种限制。如果您真的需要发送大量电子邮件,您最终会为此付费。

  2. 拆分您的邮寄列表,这样您每天只向列表的一部分发送邮件。如果它是每日限制,这可能会帮助您保持在速率限制内。 (不过,它对每月限额没有帮助)

  3. 使用专用的第三方电子邮件服务,例如 https://sendgrid.com/。 Sendgrid (其他类似的提供商也存在) 提供为营销邮件量身定制的 SMTP 邮件服务。他们的基本服务是免费的,每天最多可发送 400 封不同的邮件。如果该数字明显优于您自己的提供商,则他们可能值得考虑。 (他们还为您提供了一个显示统计信息以及您是否被标记为垃圾邮件等的仪表板,因此这也有额外的价值)

  4. 只需向所有人发送相同的一封邮件,但使用通用退订 link。由于每个人都收到相同的邮件,取消订阅 link 不能包含任何用户特定的令牌,因此您的用户将不得不在取消订阅页面中输入他们的电子邮件地址,这对他们来说有点不便,但它确实允许您按照原计划通过 BCC 发送。