php - codeigniter smtp 邮件无法正常工作
问题描述
我已经使用 gmail smtp 电子邮件库从 codeingiter 项目发送邮件。但是提交表单时显示以下错误:
A PHP Error was encountered
Severity: Warning
Message: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()
Filename: libraries/Email.php
Line Number: 1902
Backtrace:
File: D:\xampp\htdocs\projectName\application\controllers\Users.php
Line: 66
Function: send
File: D:\xampp\htdocs\projectName\index.php
Line: 315
Function: require_once
我的控制器功能代码:
$config = array(
'protocol' => 'smtp',
'smtp_host' => 'smtp.gmail.com',
'smtp_port' => 587, //if 80 dosenot work use 24 or 21
'smtp_user' => '**',
'smtp_pass' => '**',
'_smtp_auth' => true,
'smtp_crypto' => 'tls',
'protocol' => 'smtp',
'mailtype' => 'html',
'charset' => 'iso-8859-1',
'wordwrap' => TRUE
);
$this->load->library('email', $config);
$this->email->set_newline("\r\n");
$this->email->from('users@gmail.com'); //same email u use for smtp_user
$this->email->to($this->input->post('user_email'));
$this->email->subject($subject);
$this->email->message($message);
if($this->email->send())
我的 php.ini 文件:
[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP=localhost
; http://php.net/smtp-port
smtp_port=25
但是邮件还是发不出去。
我的控制器有问题吗?
解决方案
您的代码的问题是您没有初始化电子邮件设置。你的控制器代码在 $this->load->library('email', $config); 是错的。加载电子邮件库后,您必须单独初始化电子邮件设置。
看看这段代码。
$config['protocol'] = 'smtp';
$config['smtp_host'] = 'smtp.gmail.com';
$config['smtp_port'] = 587, //if 80 dosenot work use 24 or 21
$config['smtp_user'] = '**';
$config['smtp_pass'] = '**';
$config['_smtp_auth'] = true,
$config['smtp_crypto'] = 'tls';
$config['protocol'] = 'smtp';
$config['mailtype'] = 'html';
$config['charset'] = 'iso-8859-1';
$config['wordwrap'] = TRUE
$this->load->library('email');
$this->email->initialize($config);
$this->email->set_newline("\r\n");
$this->email->from('users@gmail.com'); //same email u use for smtp_user
$this->email->to($this->input->post('user_email'));
$this->email->subject($subject);
$this->email->message($message);
$this->email->send();
有关更多信息,请查看此处
推荐阅读
- python - 音频文件中的静音/暂停导致 Google Speech to Text 转录提前结束
- python - 如何在没有 agg 函数的 groupby 之后保留原始列?
- objective-c - 汇总并存储 for 语句中的数据
- kotlin - 合并地图列表(字符串列表)
- python - 尝试使用 pyfftw -“输出数组和输入数组 dtypes 不对应于有效的 fftw 方案。”
- python - 在 Pandas DataFrame 中为每个 groupby 列添加行值
- deep-learning - Pytorch 二阶导数返回无
- android - 自定义绘制的对象不会响应触摸事件
- php - MySQL不接受有效的日期时间
- security - 如何动态设置 Kubernetes Network Policy 中的信息?