首页 > 解决方案 > Codeigniter 3.0 - SMTP 邮件异常失败

问题描述

我在 PHP 中使用 Codeigniter 3 框架。我在使用 SMTP 发送邮件时遇到问题。在我的应用程序中,我选择用户和每个用户,我必须发送自定义消息(从数据库中提取)并发送电子邮件。向少数用户发送电子邮件后,后续电子邮件失败;并且发生此错误的用户数不一致;它不稳定,日志文件中也没有日志。

几天后,所有电子邮件都停止了,我必须重新启动计算机才能使电子邮件正常工作(甚至无法从 xampp 控制面板帮助重新启动服务)

我尝试了一些调试,并意识到system/libraries/Email.php 中的_send_data函数中的fwrite会在电子邮件失败时返回空白。但是冷不调试这个失败背后的原因。

请帮助解决这个问题。

下面是我的代码:(我没有在此处复制我的电子邮件配置文件,因为正在发送一些邮件,因此我假设电子邮件配置没有问题)

控制器

public function sendLogmails(){
    $this->load->model('masters/Users_model');
    $us = $this->Users_model->getActiveUsers();
    $this->load->model('Logs_model');
    $this->load->model("Email_model");
    foreach ($us as $u){
        $l = $this->Logs_model->getUserCurrentLogs($u->userID);
        if (sizeof($l)>0){  
            $model = array("logs"=>$l);
            $a = $this->load->view('email/emailLogs',$model,true);
            $this->Email_model->sendmail($u->email,"Activity Logs ",$a);
            //usleep(10000000) //Tried by adding this line assuming some network delays might be reason for this error
        }
        
    }   
}

电子邮件模型 (Email_model)

public function sendmail($to,$subject,$message){
    $this->email->clear();
    $this->load->config('email');
    $this->email->send_multipart = false;
    $this->email->from($this->config->item('frommail'), $this->config->item('fromname'));
    $this->email->to($to);
    $this->email->subject($subject);
    $this->email->message($message);
    if(!$this->email->send()) {
                echo "Start of debugger for e-mail: ";
                echo $this->email->print_debugger();
                $this->email->clear();      
            }
}

print_debugger() 报告(出于保密目的,我用零、服务器名和实际电子邮件 ID 屏蔽了 IP 地址)

220 servername.Net Microsoft ESMTP MAIL Service ready at Sat, 10 Apr 2021 11:14:23 +0530
hello: : 250-servername.Net Hello [000.000.000.000]
250-SIZE 206569472
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-X-ANONYMOUSTLS
250-AUTH NTLM
250-X-EXPS GSSAPI NTLM
250-8BITMIME
250-BINARYMIME
250-CHUNKING
250 XRDST
from: frommail-id@domain.com: 250 2.1.0 Sender OK
to: tomail-id@domain.com: 250 2.1.5 Recipient OK
data: : 354 Start mail input; end with .

quit: : 
The following SMTP error was encountered:
The following SMTP error was encountered:
Unable to send email using PHP SMTP. Your server might not be configured to send mail using this method.

标签: phploopsemailsmtpcodeigniter-3

解决方案


推荐阅读