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

CodeIgniter本地环境Gmail SMTP邮件发送失败问题求助

解决本地XAMPP+CodeIgniter发送Gmail SMTP验证邮件失败的问题

看起来你已经做了不少尝试,但还是卡在SMTP发送错误上,我帮你梳理几个关键的排查点和修复步骤,应该能解决问题:

1. 优先检查Gmail账号的安全设置(最常见原因)

Gmail对第三方应用的SMTP访问有严格限制,这大概率是你遇到问题的核心:

  • 如果你的Google账号开启了两步验证(2FA):绝对不能用普通账号密码作为SMTP密码,必须生成一个应用专用密码(App Password)。生成路径:Google账号设置 -> 安全 -> 应用专用密码(需要先开启2FA才能看到这个选项),把生成的16位密码替换到sendmail.ini的auth_password和CodeIgniter配置里的smtp_pass。
  • 如果没开2FA:需要开启“不太安全的应用访问”(不过Google现在逐步移除了这个选项,更推荐启用2FA后用应用专用密码)。
  • 同时,确保在Gmail设置的「转发和POP/IMAP」里启用了IMAP服务。

2. 补全sendmail.ini和php.ini的关键配置

你的现有配置缺少了TLS加密的关键项,这会导致587端口连接失败:

修改后的sendmail.ini

[sendmail]
smtp_server=smtp.gmail.com
smtp_port=587
smtp_ssl=tls  # 新增这行,587端口必须启用TLS
error_logfile=error.log
debug_logfile=debug.log
auth_username=qwerty@gmail.com
auth_password=你的应用专用密码/开启权限后的普通密码
force_sender=qwerty@gmail.com

确认php.ini配置

  • 确保sendmail_path的路径正确,你的配置"C:\xampp\sendmail\sendmail.exe" -t没问题,但要确认sendmail.exe确实在该路径下。
  • 修改配置后必须重启XAMPP的Apache服务,否则新配置不会生效!

3. 调整CodeIgniter的邮件配置

在你的邮件配置数组里补充TLS加密项,并修正超时设置:

$config = array(
 'protocol' => 'smtp',
 'smtp_host' => 'smtp.gmail.com',
 'smtp_port' => 587,
 'smtp_crypto' => 'tls', // 新增TLS加密配置
 'smtp_user' => 'qwerty@gmail.com',
 'smtp_pass' => '你的应用专用密码/开启权限后的普通密码',
 'smtp_timeout' => 30, // 设置具体超时时间,不要留空
 'mailtype' => 'html',
 'charset' => 'iso-8859-1',
 'wordwrap' => TRUE,
 'validate' => FALSE
);

4. 排查本地网络和防火墙问题

  • 暂时关闭本地防火墙或者给Apache、sendmail.exe添加出站访问权限,避免防火墙拦截SMTP请求。
  • 用telnet测试网络连通性:打开命令提示符,输入telnet smtp.gmail.com 587,如果能看到类似220 smtp.gmail.com ESMTP的提示,说明网络没问题;如果连接失败,可能是网络环境限制了SMTP端口(比如公司/校园网络)。

最后:查看详细日志定位问题

sendmail.ini里配置了debug.log和error.log,发送失败后打开这两个文件,里面会有具体的错误信息(比如认证失败、连接超时等),可以帮你精准定位剩余问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 22:52:43