php - 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.
解决方案
推荐阅读
- python - 在 django 中将 SQL 字符串转换为模型日期时间
- python-3.x - Slack Slash 命令 文本格式
- javascript - 如何访问 Vuex 动态状态属性?
- java - 使用 Spring Thymeleaf 从 Query 中填充 Select 下拉列表
- android - 如何衡量android中的布局性能?
- javascript - 如何在一定时间内向特定用户添加角色的命令?(仅限 Discord.js v12)
- ruby-on-rails - 委托类型继承
- laravel - livewire 变量得到一个我没有声明的查询结果
- javascript - 从createjs补间解析形状运动?
- build - 如何使用 wasmtime 运行时构建特使?