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

CodeIgniter Email库发送邮件超时,无成功响应也无报错

解决CodeIgniter Gmail SMTP邮件发送超时问题

看起来你遇到的超时问题大概率是Gmail安全限制或者SMTP配置细节导致的,我来给你几个实用的排查和修复方向:

1. 替换Gmail密码为应用专用密码

现在Gmail默认禁用了"低安全性应用"的访问权限,哪怕你输入正确的账号密码也会连接失败。解决步骤:

  • 先给你的Google账号开启两步验证
  • 到Google账号的「安全」设置中创建一个应用专用密码(选择「邮件」应用,设备选项随便选即可)
  • 把$config['smtp_pass']的值换成这个生成的16位应用密码,而不是你日常登录Gmail的密码

2. 修复换行符配置

SMTP协议对换行符有严格要求,你的$config['newline']看起来是手动换行,建议改成标准的SMTP换行符:

$config['newline'] = "\r\n";

CodeIgniter的Email库对这个配置很敏感,用错了会直接导致连接异常或发送失败。

3. 尝试切换到TLS端口(587)

部分服务器的防火墙会封禁465端口,你可以改用TLS协议的587端口,修改配置如下:

$config['smtp_host'] = 'tls://smtp.gmail.com';
$config['smtp_port'] = '587';

同时可以把超时时间调长,给连接留足时间:

$config['smtp_timeout'] = '120'; // 设置为120秒

4. 检查PHP执行时间限制

如果脚本在SMTP连接完成前就超时终止,也会出现无输出的情况。可以在代码开头临时调高执行时间:

ini_set('max_execution_time', 120); // 临时设置为120秒

5. 确认Email库的加载顺序

确保你是先加载Email库,再初始化配置,顺序反了会导致配置不生效:

$this->load->library('email'); // 先加载库
$this->email->initialize($config); // 再初始化配置

强制输出调试信息

如果还是有问题,强制打印调试信息,避免脚本提前终止:

if (!$sent) {
    echo "<pre>";
    echo $this->email->print_debugger();
    echo "</pre>";
    exit;
}

这样能看到具体的连接错误日志,方便进一步定位问题。

内容的提问来源于stack exchange,提问作者Zahoor Ul Haq

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:21:30