当用户在我的网站中提交表单时,将向所有活动的供应商发送通知电子邮件,这是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);
}发布于 2013-05-23 15:07:54
php mail函数接受多个电子邮件ids。因此,您可以创建一个字符串,其中所有邮件ids都由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);发布于 2013-05-23 15:08:34
看一下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秒,然后再继续。
发布于 2013-05-23 15:08:36
在数据库中存储一个"last_email_sent“值并与之进行比较如何?然后,如果自上次发送以来的时间大于某段时间,则只会向该人发送新的电子邮件。
https://stackoverflow.com/questions/16707582
复制相似问题