我已经编写了代码,通过循环 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)使用第三方提供商可能更安全(垃圾邮件明智)和更有效。