Php 无法执行邮件传递程序

Php 无法执行邮件传递程序,php,codeigniter,phpmailer,Php,Codeigniter,Phpmailer,因此,我为每个订阅的用户发送循环邮件,但它给了我一个错误: $this->load->model('emailmodel'); $query = $this->emailmodel->get_emails(); $emails = array(); set_time_limit(0); foreach($query->result() as $u) { $this->notification->send($u->to, $this->

因此,我为每个订阅的用户发送循环邮件,但它给了我一个错误:

$this->load->model('emailmodel');
$query = $this->emailmodel->get_emails();
$emails = array();
set_time_limit(0);

foreach($query->result() as $u)
{
    $this->notification->send($u->to, $this->config->item('neworder'),'orders/mail/subscription', 
        array(
            'order' => $neworder,
            'user' => $user
        ));
    break;
}

如何修复此问题?

我认为您的系统不支持该路径中的sendmail。。您必须更改sendmail路径或重新安装它,并确保队列邮件没有过载

我们也有同样的问题。 请检查系统ulimit上的安全限制

您可以执行ulimit-a

巴什乌利米特-a

。。。 打开文件-n 1024 最大用户进程数-u1024

您可以在/etc/security/limits.conf中的RedHat上更改此设置 我们已将nproc和nofile更改为更大的值


因为每个邮件调用都会打开一个端口文件。如果达到文件限制,则会出现此错误消息。

我们还突然出现了此奇怪的错误。重新启动php fpm解决了我们的问题。这可能是由于我的最大文件数,或其他一些内存泄漏类型的问题。为了防止这种情况再次发生,我启用了pm.max_requests=200,以便更频繁地循环php fpm进程。

在我的例子中,该站点托管在MediaTemple上,看起来是php版本。该网站运行的是5.3 FastCGI,当我切换到5.3 CGI时,它运行得很好。

同样的情况也发生在这里,发送超过50000封电子邮件,数据量为1.1GB

我使用了一个简单的脚本,通过select*from email_队列读取所有内容,并在mysqli_fetch_assoc-loop中将其传递给mail。多年来,cronjob一直在顺利运行,但不是最后一次


这里的解决方案是只从email_队列发送一个select id,然后用另一个select*…读取循环中的记录。。。并将其传递给邮件。此外,平均负载显著下降。

是否存在/usr/sbin/sendmail?我可以不使用foreach循环发送邮件,但在foreach循环中它会给我带来此错误,我尝试将内存限制增加到128MB,但这无助于EDI是否有其他方法不使用循环向订阅用户发送电子邮件?检查返回的数据,听起来似乎有些数据不好。您是在本地运行还是在主机上运行?如果是主机,有些人不允许从客户端更改php.ini设置。你解决过这个问题吗?我也有同样的问题!
Could not execute mail delivery program '/usr/sbin/sendmail -t -i '