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

CodeIgniter发送邮件返回HTTP 303状态码发送失败如何解决

问题原因及解决方法

1. 你看不到邮件报错、返回303状态码的原因

303是重定向状态码,和邮件发送本身无关:你的控制器逻辑中,不管邮件发送成功还是失败,都会执行redirect跳转,跳转后当前请求的输出内容全部会被丢弃,自然看不到邮件发送的具体错误信息。

2. 导致邮件发送失败的直接BUG

  • 第一个BUG:你的自定义邮件类Ah_Email的send方法中,设置收件人逻辑加了判断:只有当$settings中存在send_email且值为真时才会调用$this->email->to($email_to),但你在控制器调用send方法时,根本没有传入send_email参数,导致邮件没有收件人,必然发送失败。
  • 第二个BUG:你想覆盖mailtype为text,但参数传错了位置:send方法的第四个参数是模板变量,第五个参数才是配置覆盖项,你把mailtype放到了模板变量数组里,配置不会生效。

3. 具体修复步骤

步骤1:修复控制器调用参数

修改控制器的调用代码,把配置项放到第五个参数,同时传入send_email开启收件人设置:

public function SendMail() {
    $this->load->library('ah_email', 'ah_email');

    // 注意:第四个参数是模板变量,第五个才是配置覆盖
    $send = $this->ah_email->send(
        'receiver@gmail.com', 
        'Informasi Kode OTP Akun Kamu', 
        'example', 
        // 模板变量
        array(
            'username'  => 'Ndo Malau',
            'message'   => 'Hello World'
        ),
        // 配置覆盖项放这里
        array(
            'mailtype'  => 'text',
            'send_email' => true
        )
    );

    // 临时注释重定向,打印错误排查,排查完再恢复
    if(!$send) {
        // 输出邮件具体错误信息
        echo $this->ah_email->email->print_debugger();
        exit;
    }

    if($send) {
        $this->session->set_flashdata('succ_msg', 'success, email has been sending!');
    } else {
        $this->session->set_flashdata('err_msg', 'failed, error while email sending');
    }
    redirect(base_url('Systems/Users/index/'));
}

步骤2:可选优化(可直接移除无用判断)

如果send_email这个判断没有特殊用途,可以直接修改Ah_Email.php中的代码,删掉判断,默认设置收件人:

// 删掉if判断,直接设置收件人
$this->email->to($email_to);

步骤3:其他可能的问题排查

如果修复后还是发送失败,根据print_debugger()输出的错误做对应处理:

  • 如果是SMTP连接失败:检查你的Mailtrap的SMTP用户名、密码是否正确,你当前贴的配置里的账号密码是脱敏后的,实际使用要填Mailtrap后台提供的真实凭据;也可以尝试更换端口为465,smtp_crypto改为ssl,部分服务器环境可能封禁2525端口。
  • 如果是模板加载失败:检查application/views/emails/example.php文件是否存在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:18:02