如何设置发送邮件的间隔?

时间:2013-05-23 07:02:49

标签: php mysql

当用户在我的网站上提交表单时,会向所有活跃的供应商发送通知电子邮件,这些供应商是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);
    }

3 个答案:

答案 0 :(得分:3)

php mail函数接受多个电子邮件ID。因此,您可以创建一个字符串,其中包含由commas

分隔的所有邮件ID
$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”值并与之进行比较?然后,如果自上次发送以来的时间超过某段时间,您只会向该人发送新电子邮件。