0

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

3 回答 3

3

php邮件函数接受多个电子邮件 ID。因此,您可以创建一个字符串,其中所有邮件 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);
于 2013-05-23T07:07:53.547 回答
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 秒钟,然后再继续。

于 2013-05-23T07:08:33.580 回答
0

您如何在数据库中存储“last_email_sent”值并与之进行比较?然后,如果自上次发送以来的时间大于某个时间段,您只会向该人发送新电子邮件。

于 2013-05-23T07:08:35.807 回答