0

我的申请表需要很长时间才能提交。有时电子邮件会重复,并且在错误日志中我可以看到这个 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);
    }
4

1 回答 1

1

要将电子邮件发送给多个收件人,请用逗号分隔每个电子邮件地址。implode()您可以使用该函数在一行中执行此操作,而不是循环。

要回答您的问题,可能是内存泄漏。试试我的解决方案,用我的代码替换你的代码:

$emails = $pdo->prepare("SELECT * FROM owners WHERE status = 'active'");
$emails->execute()->fetchAll();

mail(implode(', ', $emails), $subject, $message, $headers);

另外,请避免使用mysql_*函数。它们已被弃用。试试PDO吧。更多信息可以在这里找到。


您可能还想研究 cron 作业。使用该功能发送的电子邮件mail()通常会自动放入垃圾邮件文件夹。

于 2013-05-23T15:47:24.843 回答