当用户在我的网站上提交表单时,会向所有活跃的供应商发送通知电子邮件,这些供应商是250个不同的供应商。 我为此使用了mail()函数,但有时用户在尝试提交表单时会看到内部服务器错误,并且电子邮件会被重复发送。如果不同的用户尝试同时提交表单,是否会导致任何问题?如果是这样,我可以在发送邮件之间设置间隔吗? 这是我的代码:
$emails = mysql_query('select * from supplier_detail where emailquotes = "y" and s_active ="a"');
while($row = mysql_fetch_assoc($emails)){
$to = $row['s_email'];
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: mysitename <noreply@mysitename.com' . "\r\n";
mail($to, $subject, $message, $headers);
}
答案 0 :(得分:3)
php mail函数接受多个电子邮件ID。因此,您可以创建一个字符串,其中包含由commas
$to = array();
while ($row = mysql_fetch_assoc($emails)) {
$to[] = $row['s_email'];
}
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: mysitename <noreply@mysitename.com' . "\r\n";
mail(implode(",", $to), $subject, $message, $headers);
答案 1 :(得分:0)
看一下sleep()函数,您的代码将如下所示:
while($row = mysql_fetch_assoc($emails))
{
$to = $row['s_email'];
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: mysitename <noreply@mysitename.com' . "\r\n";
mail($to, $subject, $message, $headers);
sleep(1);
}
这将等待1秒后再继续。
答案 2 :(得分:0)
如何在数据库中存储“last_email_sent”值并与之进行比较?然后,如果自上次发送以来的时间超过某段时间,您只会向该人发送新电子邮件。