Php CODEIGNITER-fwrite():SSL操作失败,代码为1。OpenSSL错误消息:错误:140D00CF:SSL例程:SSL\u写入:协议已关闭
我有一个smtp电子邮件配置,可通过Codeigniter发送电子邮件,如下所示: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
$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服务器的指令关闭了连接。您可以在每封电子邮件上关闭套接字并打开一个新的套接字,但这可能会带来很大的开销。如果你真的需要用一个循环发送大量电子邮件,我建议你考虑一个邮件传递服务,而不是自己发送电子邮件。