向多个用户发送邮件,无需循环


send mails to multiple users without looping

我已经编写了代码,通过循环 1200 次为每个用户生成唯一的随机取消订阅链接来向 1200 多个用户发送邮件,但由于此过程,页面被延迟。请给我完成这项任务的建议。我的代码如下:

while ($result = mysqli_fetch_assoc($query)) {
  $unsubscribe_link = 'XXXXXX';
  mail(
    $result['user_email'],
    $subject,
    message($unsubscribe_link), html_headers($from_mail)
  );
}

可以将电子邮件地址连接到 PHP 邮件函数的 to 字段中以避免循环:

// multiple recipients
$to  = 'aidan@example.com' . ', '; // note the comma
$to .= 'wez@example.com';

但是,当您向用户发送个人取消订阅链接时,这是不可行的(因为收件人会看到其他人的电子邮件地址)。 另外,正如评论中已经提到的,这可能是一个更适合在后台处理的任务。

PHP.net 文档建议:

值得注意的是,mail() 函数不适合循环中大量电子邮件。此功能为每个电子邮件打开和关闭SMTP套接字,效率不高。 有关发送大量电子邮件的信息,请参阅 » PEAR::邮件和 » PEAR::Mail_Queue 软件包。

但是,我会认为为您的交易电子邮件(例如 Mandrill)使用第三方提供商可能更安全(垃圾邮件明智)和更有效。