Php CODEIGNITER-fwrite():SSL操作失败,代码为1。OpenSSL错误消息:错误:140D00CF:SSL例程:SSL\u写入:协议已关闭

Php CODEIGNITER-fwrite():SSL操作失败,代码为1。OpenSSL错误消息:错误:140D00CF:SSL例程:SSL\u写入:协议已关闭,php,codeigniter,email,smtp,smtpclient,Php,Codeigniter,Email,Smtp,Smtpclient,我有一个smtp电子邮件配置,可通过Codeigniter发送电子邮件,如下所示: $config = [ 'protocol' => 'smtp', 'smtp_host' => 'ssl://cph.dnet.net.id', 'smtp_port' => 465, 'smtp_timeout' => 50, 'smtp_user' => 'Myemail@domain.com', 'smtp_pass' => 'MyPaSsWoR

我有一个smtp电子邮件配置,可通过Codeigniter发送电子邮件,如下所示:

$config = [
  'protocol' => 'smtp',
  'smtp_host' => 'ssl://cph.dnet.net.id',
  'smtp_port' => 465,
  'smtp_timeout' => 50,
  'smtp_user' => 'Myemail@domain.com',
  'smtp_pass' => 'MyPaSsWoRd',
  'smtp_keepalive' => 'TRUE',
  'mailtype' => 'html',
  'charset' => 'iso-8859-1'
];
$this->email->initialize($config); 
如果我只发送几封电子邮件,它总是有效的。但是,当我发送大量电子邮件时,会出现如下错误:

Fatal error: Maximum execution time of 30 seconds exceeded in C:\XAMPP\htdocs\sicuti\system\libraries\Email.php on line 2268
通过将“max_execution_time”值中的“php.ini”编辑为9999,可以解决此错误 .但codeigniter显示出如下新问题:

fwrite(): SSL operation failed with code 1. OpenSSL Error messages: error:140D00CF:SSL routines:SSL_write:protocol is shutdown
即使我的smtp配置是正确的,根据我的cpanel中的建议

如果只有几封电子邮件肯定能正常工作,但如果出现10多个错误,我应该做些什么更改,以便一次可以发送多封电子邮件?
谢谢您,我非常感谢您的回复。

我有一个循环功能来发送多封电子邮件,这会导致错误,因为我一次发送了很多电子邮件,所以我会重定向到每封电子邮件,以便正常发送。下面的循环函数我插入了重定向函数,它工作得很好:

function index () {
  if (!empty($this->Leave_Model->count_all_leave_wait())) {
    $leave_wait_data = $this->Leave_Model->get_all_leave_wait();
    foreach ($leave_wait_data as $res) {
      if (date('Y-m-d')>$res->Confirm_Date) {
        $this->Send_Leave_Request($res->L_Request_ID); # Send Email
        $this->Leave_Model->update_lvd_confirm_date($res->L_Request_ID); # Update Confirm Date When Success Send
        redirect('Login_Employe'); # Redirect
      }
    }
  }
}

function Send_Leave_Request ($id)
{
  # bla bla bla
  $this->email->message('Bla bla  la  bla  bla...');
  $this->email->send();
}

第一个错误虽然通过更改PHP中的最大执行时间得到了缓解,但不应认为已经得到了明确解决。提高最大执行时间可能会严重影响服务器将来的性能,而且它只会避免PHP方面的错误。也就是说,
140D00CF
表示OpenSSL套接字从未打开,或者它自己关闭,不再可用。我的建议是:你能用秒表计时吗?这些错误出现需要多长时间?如果总是相同的秒数,则可能是SMTP服务器的指令关闭了连接。您可以在每封电子邮件上关闭套接字并打开一个新的套接字,但这可能会带来很大的开销。如果你真的需要用一个循环发送大量电子邮件,我建议你考虑一个邮件传递服务,而不是自己发送电子邮件。