我的申请表需要很长时间才能提交。有时也会重复发送电子邮件,在错误日志中我可以看到这个PHP警告:mail() [<a href='function.mail'>function.mail</a>]: Could not execute mail delivery program '/usr/sbin/sendmail -t -i'
这是我的代码:
$emails = mysql_query('select * from owners where status ="active"');
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 :(得分:1)
要向多个收件人发送电子邮件,请用逗号分隔每个电子邮件地址。您可以使用implode()
函数在一行中执行此操作,而不是循环。
要回答你的问题,可能是内存泄漏。尝试使用我的解决方案替换我的代码:
$emails = $pdo->prepare("SELECT * FROM owners WHERE status = 'active'");
$emails->execute()->fetchAll();
mail(implode(', ', $emails), $subject, $message, $headers);
另外,请避免使用mysql_*
功能。他们被弃用了。请尝试使用PDO
。可以找到更多信息here。
您可能还想查看cron作业。使用mail()
功能发送的电子邮件通常会自动放入垃圾邮件文件夹中。