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

CodeIgniter默认邮件器无法通过PHP SMTP发送邮件求助

解决CodeIgniter默认邮件器连接Gmail时的535认证失败问题

我之前也碰到过完全一样的认证错误,结合你已经做的排查,给你补充几个关键的解决方向:

1. 确认Gmail账号的安全设置(针对未开启两步验证的情况)

  • 虽然你说已经启用了低安全应用访问,但建议再去Gmail账号的安全中心确认:找到“不太安全的应用访问”选项,确保它确实处于开启状态(注:2022年后创建的Gmail账号可能移除了这个选项,这类账号需要用OAuth2认证,但你的问题发生在2019年,当时该选项还存在)
  • 检查Gmail是否触发了“异常登录检测”:登录你的Gmail邮箱,查看有没有提醒“来自陌生设备的登录尝试”,如果有,点击“允许此登录”后再重新尝试发送邮件

2. 核对CodeIgniter邮件配置的细节

很多时候认证失败是配置参数不匹配导致的,以下是正确的配置示例,你可以对比调整:

$config['protocol'] = 'smtp';
$config['smtp_host'] = 'smtp.gmail.com';
$config['smtp_port'] = 587; // TLS协议用587,SSL协议用465
$config['smtp_user'] = 'your-full-email@gmail.com'; // 必须是完整邮箱地址,不能省略@gmail.com后缀
$config['smtp_pass'] = 'your-gmail-password'; // 确保密码无拼写错误、无多余空格
$config['smtp_crypto'] = 'tls'; // 对应587端口;若用465端口则改为'ssl'
$config['mailtype'] = 'html';
$config['charset'] = 'utf-8';
$config['newline'] = "\r\n"; // 这个参数很关键,必须用\r\n,否则会出现SMTP协议错误

特别注意:如果你的主机设置成ssl://smtp.gmail.com,一定要把smtp_port改成465,同时smtp_crypto设为ssl,三者必须保持一致。

3. 服务器环境的额外检查

  • 确认服务器的防火墙/安全组没有拦截587或465端口的出站请求
  • 虽然你已经开启了openssl,但可以通过以下代码验证其是否正常工作:
var_dump(openssl_get_cert_locations());

如果输出正常说明openssl配置没问题;若输出错误,需要联系服务器管理员重新配置openssl

4. Google Workspace账号的特殊情况

如果你的邮箱是Google Workspace(原G Suite)账号,需要联系域管理员确认:是否允许第三方应用通过SMTP访问邮箱,部分管理员会限制这类访问权限


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:04:36