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

CodeIgniter 3.3测试环境SMTP邮件发送超时,本地正常求助

测试环境Gmail SMTP发送超时问题解决方案

1. 排查服务器网络连通性

  • 登录测试环境服务器,执行命令验证SMTP端口连通性:
    telnet smtp.gmail.com 587
    # 或用nc命令
    nc -zv smtp.gmail.com 587
    
    如果连接失败,说明服务器防火墙/安全组封禁了587出站端口,需联系运维开放该端口(或备选的465 SSL端口)。
  • 验证DNS解析是否正常:
    nslookup smtp.gmail.com
    
    确保能正确解析到Gmail的SMTP服务器IP。

2. 修正Gmail账号授权配置

  • 若使用普通Gmail账号,需确认低安全性应用访问已开启(谷歌默认关闭,更推荐用应用专用密码)。
  • 开启两步验证的账号,必须替换原密码为应用专用密码:登录谷歌账号后台,进入「安全」-「应用专用密码」,生成SMTP专属密码后更新配置中的smtp_pass。
  • 手动登录Gmail网页版,检查是否有未处理的异地登录安全提示,解除账号限制。

3. 调整CodeIgniter邮件配置

  • 切换端口与加密方式,尝试使用SSL协议:
    $config['email_settings']['smtp_port'] = '465';
    $config['email_settings']['smtp_crypto'] = "ssl";
    
  • 延长SMTP超时时间,避免因网络延迟导致超时:
    $config['email_settings']['smtp_timeout'] = 30; // 设置为30秒
    
  • 确认newline参数保持"\r\n",避免与服务器换行格式冲突。

4. 检查PHP环境依赖

  • 通过phpinfo()确认openssl扩展已启用,Gmail SMTP加密连接依赖该扩展。
  • 检查allow_url_fopen配置是否开启,部分环境下该参数会影响网络请求。
  • 用原生PHP代码测试SMTP连接,排除CodeIgniter邮件库问题:
    <?php
    require_once 'class.phpmailer.php';
    $mail = new PHPMailer();
    $mail->IsSMTP();
    $mail->Host = 'smtp.gmail.com';
    $mail->SMTPAuth = true;
    $mail->Username = '你的Gmail账号';
    $mail->Password = '应用专用密码';
    $mail->SMTPSecure = 'tls';
    $mail->Port = 587;
    $mail->From = '你的Gmail账号';
    $mail->AddAddress('测试收件邮箱');
    $mail->Subject = 'SMTP测试';
    $mail->Body = '测试内容';
    if(!$mail->Send()) {
       echo '错误信息: ' . $mail->ErrorInfo;
    } else {
       echo '邮件发送成功';
    }
    

5. 替代方案:改用第三方邮件服务

若以上方法均无效,可能测试环境服务器被谷歌IP限制,可切换至SendGrid、Mailgun等第三方邮件服务,这类服务的SMTP配置更宽松,发送稳定性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 10:36:02