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

CodeIgniter邮件发送问题求助:fsockopen警告错误

解决CodeIgniter发送邮件时fsockopen()警告问题

嘿,我来帮你搞定这个CodeIgniter发邮件的问题!你遇到的fsockopen()警告,本质是程序没法和SMTP服务器建立连接,咱们一步步排查解决:

1. 先检查SMTP核心配置是否正确

这是最常见的问题,别写错服务器地址、端口和加密方式:

  • 确认$config['smtp_host']是对应邮箱的官方SMTP地址(比如QQ邮箱是smtp.qq.com,Gmail是smtp.gmail.com)
  • 端口别搞混:普通SMTP用25,SSL加密用465,TLS加密用587
  • 记得开启SMTP验证,设置$config['smtp_auth'] = TRUE;

给你个参考配置示例(Gmail为例):

$config['protocol'] = 'smtp';
$config['smtp_host'] = 'smtp.gmail.com';
$config['smtp_port'] = 465;
$config['smtp_user'] = '你的gmail邮箱地址';
$config['smtp_pass'] = '你的Gmail应用专用密码'; // 开启2FA后必须用这个,不能用登录密码
$config['smtp_crypto'] = 'ssl';
$config['mailtype'] = 'html';
$config['charset'] = 'utf-8';

2. 排查端口和防火墙限制

  • 本地XAMPP环境:检查Windows防火墙/杀毒软件有没有拦截25、465、587端口的出站请求,暂时关闭试试能不能正常发送
  • 线上服务器:很多主机商会默认封禁25端口,这种情况换465或587端口,或者联系主机商解封

3. 确认PHP的fsockopen函数没被禁用

打开XAMPP里的PHP配置文件(Apache控制面板→Config→PHP(php.ini)),搜索disable_functions,看看里面有没有fsockopen,如果有就把它删掉,然后重启Apache服务。

4. 处理SSL证书验证问题

如果用了SSL/TLS连接,本地PHP可能没信任对应邮箱的CA证书,测试环境可以临时关闭证书验证(生产环境别这么做!):

$config['smtp_ssl_verify'] = FALSE;
$config['smtp_timeout'] = 30; // 延长超时时间,避免连接慢导致失败

5. 邮箱账号的特殊设置

像Gmail、Outlook这类邮箱,需要额外设置:

  • Gmail:开启两步验证后,必须创建应用专用密码来代替登录密码;没开2FA的话,要开启“允许低安全性应用访问”(现在Gmail默认关闭,可能需要去账号设置里开启)
  • QQ邮箱:要在账号设置里开启“SMTP服务”,并获取授权码作为smtp_pass

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:19:50