You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter 2.2.6发送邮件提示成功但未收到的问题求助

CodeIgniter 2.2.6 邮件发送返回成功但实际未收到的解决办法

核心问题分析

从你的调试输出能看到,实际使用的是mail协议,而非你配置的SMTP协议——这是代码配置里的错误导致的:

  1. 协议拼写错误:'protocol' => 'smpt' 里的smpt是拼写失误,正确应为smtp,错误导致框架自动 fallback 到默认的mail协议,根本没走你配置的Gmail SMTP服务。
  2. 语法错误:'mailpath' => '/usr/sbin/sendmail, 缺少闭合的单引号,属于语法错误,会干扰配置加载。
  3. 缺失SMTP加密配置:Gmail 587端口要求TLS加密,CodeIgniter 2需要显式配置smtp_crypto参数才能正常连接。

修正后的代码配置

<?php   
class email_otp_demo extends CI_Controller
{
    public function index()
    {
        $this->load->library('email');
        $config = Array(
            'protocol' => 'smtp', // 修正拼写错误
            'smtp_host' => 'smtp.gmail.com',
            'smtp_port' => 587,
            'smtp_crypto' => 'tls', // 添加TLS加密配置
            'smtp_user' => 'my.email@gmail.com',
            'smtp_pass' => '你的应用密码', // 开启两步验证后生成的应用密码
            'smtp_timeout' => 50,
            'mailtype' => 'text',
            'charset' => 'iso-8859-1',
            'wordwrap' => TRUE,
            'newline' => "\r\n" // 使用标准换行符,避免特殊字符问题
        );

        $this->email->initialize($config);
        
        $this->email->from('my.email@gmail.com', 'Social media website');
        $this->email->to('sender@yahoo.com');
        
        $this->email->subject('Email Test');
        $this->email->message('Testing the email class.');
            
        echo $this->email->send() ? '发送成功' : '发送失败';
        echo "<hr>";
        echo $this->email->print_debugger();
    }
}
?>

额外注意事项

  • Gmail账号配置:必须开启两步验证,然后在Google账号设置中生成应用密码,用这个应用密码替换配置里的smtp_pass——原密码已无法用于SMTP登录(Google已禁用该方式)。
  • 垃圾邮件检查:即使发送成功,邮件也可能被收件方判定为垃圾邮件,先检查收件人的垃圾邮件文件夹。
  • 调试输出验证:修正后调试输出里的协议应显示为smtp,如果还是mail,说明配置未正确加载,需排查代码语法错误。

内容的提问来源于stack exchange,提问作者Social media

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 18:55:12