CodeIgniter 3中使用Gmail SMTP发送注册验证邮件遇问题求助
CodeIgniter 3 用Gmail SMTP发验证邮件的问题解决
先修正代码里的致命拼写错误
你代码里的配置项smtp_users是错误写法,CodeIgniter 3的SMTP用户名配置项为**smtp_user**(单数形式),这个拼写错误会直接导致SMTP身份验证失败,是核心问题。
修正后的完整代码
private function _sendEmail() { $config = [ 'protocol' => 'smtp', 'smtp_host' => 'ssl://smtp.googlemail.com', 'smtp_user' => '你的Gmail邮箱地址', // 修正为单数smtp_user 'smtp_pass' => '你的应用专用密码', // 注意不能用普通登录密码,看下方说明 'smtp_port' => 465, 'mailtype' => 'html', 'charset' => 'utf-8', 'newline' => "\r\n" // 把换行设置移到配置里更规范 ]; $this->load->library('email', $config); // 无需重复调用initialize,加载库时传入config已完成初始化 $this->email->from('你的Gmail邮箱地址', '邮件发送者名称'); // from邮箱必须和smtp_user完全一致 $this->email->to('收件人邮箱地址'); $this->email->subject('注册验证'); $this->email->message('请点击链接完成账号验证'); // 替换为你的验证内容 if($this->email->send()) { return true; } else { echo $this->email->print_debugger(); die; } }
Gmail账号必须完成的设置
- 开启两步验证:登录Gmail账号后,在「安全」设置中开启两步验证,否则无法生成应用专用密码。
- 创建应用专用密码:开启两步验证后,在安全设置里找到「应用专用密码」,生成一个专门用于CodeIgniter发邮件的密码,将其填入
smtp_pass字段——现在Gmail已禁用非安全应用使用普通登录密码,必须用应用专用密码。
其他注意事项
- 确保服务器支持SSL连接,465端口未被防火墙封禁。
from中的邮箱地址必须和smtp_user完全一致,否则Gmail会拒绝发送请求。
内容的提问来源于stack exchange,提问作者Carrillo Rasyad Siswoyo
相关产品推荐
相关产品推荐

