本地XAMPP配置Gmail SMTP发邮件出现端口连接报错如何解决
报错原因
报错提示已经明确说明PHP尝试连接localhost:25发信失败,核心问题是你写的配置没有生效,具体有几个错误点:
- 配置项名称错误:Windows环境下PHP控制SMTP服务器的配置项是
SMTP,不是你使用的smtp_server,错误的配置名不会被识别,PHP依旧读取默认的localhost作为SMTP地址 - 配置冲突:你同时设置了
sendmail_path和SMTP相关配置,Windows版PHP只要指定了sendmail_path,就会优先调用sendmail程序发信,直接忽略所有SMTP相关的ini配置 - Gmail SMTP端口错误:Gmail早已禁用25端口明文发信,正确的加密端口为465(SSL)或587(TLS)
- 账号认证不兼容:目前Gmail不允许直接使用账号密码调用SMTP发信,原有密码认证逻辑已经失效。
排查解决步骤
- 第一步:选一种发信模式修正配置
两种发信模式二选一即可,不要混用:- 用XAMPP自带的sendmail.exe发信:删掉代码里所有SMTP相关的ini_set配置,只保留
sendmail_path配置,然后修改C:\xampp\sendmail\sendmail.ini文件,在文件内填写Gmail的SMTP地址、端口、账号、认证信息即可。 - 用PHP内置SMTP逻辑发信:删掉
sendmail_path的ini_set配置,修正配置项名称:
ini_set('SMTP', 'smtp.gmail.com'); ini_set('smtp_port', 465); ini_set('smtp_ssl', 'ssl'); ini_set('error_logfile', 'error.log'); ini_set('auth_username', 'myemailAddreds@gmail.com'); ini_set('auth_password', '替换为应用专用密码'); - 用XAMPP自带的sendmail.exe发信:删掉代码里所有SMTP相关的ini_set配置,只保留
- 第二步:调整Gmail账号设置
先为你的Gmail账号开启两步验证,然后在Google账号后台生成「应用专用密码」,将代码或sendmail.ini里的密码替换为生成的应用专用密码,不要使用原账号登录密码。 - 第三步:检查网络连通性
打开本地命令行执行telnet smtp.gmail.com 465,如果能正常连接说明网络无限制,如果连接失败需要检查本地防火墙、代理是否拦截了465/587端口的出站请求。 - 第四步:重启服务测试
配置修改完成后重启Apache,再运行代码测试发信即可。
内容的提问来源于stack exchange,提问作者Umar Tahir Bako
相关产品推荐
相关产品推荐

