【问题标题】:CODEIGNITER - fwrite(): SSL operation failed with code 1. OpenSSL Error messages: error:140D00CF:SSL routines:SSL_write:protocol is shutdownCODEIGNITER - fwrite():SSL 操作失败,代码为 1。OpenSSL 错误消息:错误:140D00CF:SSL 例程:SSL_write:协议已关闭
【发布时间】:2019-02-13 08:09:09
【问题描述】:

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

$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 个错误,我应该如何更改才能一次发送多封电子邮件? 谢谢你,我很感激任何回应。

【问题讨论】:

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

标签: php codeigniter email smtp smtpclient


【解决方案1】:

我有一个循环功能来发送多封电子邮件,这会导致错误,因为我一次发送很多电子邮件,所以我对每封电子邮件都进行了重定向,以便正常发送。下面的循环函数我已经插入了重定向函数,效果很好:

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();
}

【讨论】:

    猜你喜欢
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 2019-03-02
    • 1970-01-01
    • 2022-06-12
    • 2020-05-12
    • 2022-01-11
    相关资源
    最近更新 更多