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

谷歌停用低安全应用设置后CodeIgniter配置Gmail发信问题排查

Easy!Appointments 对接Gmail SMTP发信问题解答

1. 发信报错的查看路径

  • 最直接的方式是先打开配置文件里的SMTP调试开关:找到application/config/email.php里被注释的$config['smtp_debug'] = '1';行,取消注释。开启后触发发信动作时,页面会直接打印SMTP全链路交互日志,包括连接失败、认证失败、拒信等所有具体错误,不需要翻其他日志就能定位问题。
  • 程序运行错误日志默认存储在application/logs/目录下,日志文件按日期命名。需要先把application/config/config.php中的$config['log_threshold']设置为2(记录错误级别日志)及以上,邮件类抛出的未直接输出的异常才会被写入文件。
  • 如果是虚拟主机托管环境,也可以查看主机面板提供的PHP错误日志,部分托管环境会屏蔽程序层面的输出,把连接超时、类加载错误等问题记录在面板日志中。

2. useragent参数是否为必填项

不是必填。该参数仅用于标记发信客户端的标识,不会影响SMTP连接、认证、发信的核心逻辑,不配置时会自动使用框架Email类的默认值,不会导致发信失败。

3. 当前配置的错误与遗漏项

当前配置存在多处直接导致发信失败的问题,具体如下:

  • 端口与加密方式不匹配:smtp_port设置为587时,对应的加密方式必须是tls;如果要使用ssl加密,端口需要改为465,当前587端口配ssl加密根本无法完成SMTP握手。
  • 密码参数配置错误:Easy!Appointments基于CodeIgniter框架开发,Email类读取SMTP密码的参数为smtp_pass,额外添加的mail_password参数不会被程序识别;同时当前smtp_pass填写的是谷歌账号原始密码,开启两步验证后该密码无法用于SMTP认证,必须替换为谷歌账号生成的16位应用专用密码。
  • SMTP认证开关未开启:$config['smtp_auth'] = TRUE;被注释掉了,Gmail SMTP强制要求账号认证,不开启该参数程序会跳过认证步骤,直接被服务器拒绝连接。
  • 参数拼写错误:配置中写的smpt_timeout参数名拼写错误(正确应为smtp_timeout),该配置不会生效,虽然不会直接导致发信失败,但超时设置会使用框架默认值,网络波动时更容易出现连接中断。
  • 可选补充参数:建议添加$config['charset'] = 'utf-8';配置,避免邮件内容、主题出现中文乱码。

修正后的可参考配置

<?php defined('BASEPATH') or exit('No direct script access allowed');

$config['protocol'] = 'smtp';
$config['smtp_host'] = 'smtp.gmail.com';
$config['smtp_port'] = 587;
$config['smtp_crypto'] = 'tls';
$config['smtp_auth'] = TRUE;
$config['smtp_user'] = '完成验证的Gmail账号/别名地址';
$config['smtp_pass'] = '16位Gmail应用专用密码';
$config['smtp_timeout'] = 60;
$config['mailtype'] = 'html';
$config['charset'] = 'utf-8';
$config['wordwrap'] = TRUE;
// 调试阶段打开,测通后注释或设为0
// $config['smtp_debug'] = '1';

注意:使用自定义域名作为发件别名时,必须提前在Gmail账号的「账户和导入-用其他地址发送邮件」中完成该别名的SMTP所有权验证,否则即使账号密码正确,Gmail也会拒绝发信。如果多次调试失败,可以先把smtp_user改为原生@gmail.com地址测试,测通后再切换为别名。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 10:15:38