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

Gmail移除低安全应用权限后 XAMPP mail()发邮件替代方案

XAMPP环境PHP mail()对接Gmail发信替代方案

谷歌2022年全面下线低安全应用访问权限后,直接用Gmail账号主密码走第三方SMTP发信的方式已经被官方强制封禁,没有绕开的可能,你现有配置失效的核心原因就是认证规则不匹配。

方案一:最小改动适配(无需修改原有PHP代码)

这个方案只需要调整Gmail账号设置和sendmail配置,原有业务代码完全不用动,适合不想改代码的场景:

  • 前置准备:给发信用的Gmail账号开启两步验证(2FA),这是生成应用专用密码的必要条件,没开2FA的账号不会显示对应入口
  • 生成应用专用密码:进入Gmail账号安全设置页,找到「应用专用密码」选项,应用类型选「其他(自定义名称)」,随便填个标识比如XAMPP发信,点生成就能拿到16位的专用密码,这串密码只显示一次,记得复制保存
  • 修改sendmail配置:打开XAMPP目录下的sendmail.ini,找到[sendmail]段落做两处调整:
    1. 把auth_password字段原来填的Gmail登录主密码,替换成刚才拿到的16位应用专用密码,不要带中间的空格
    2. 新增一行配置smtp_ssl=tls,适配587端口的STARTTLS加密要求,不然会出现连接被拒、认证超时的问题
  • 重启Apache服务后直接运行原有代码即可正常发信,你原来写的php.ini配置不需要改动

方案二:长期稳定方案(推荐)

原生mail()函数依赖本地sendmail组件,配置繁琐、调试麻烦,发信成功率也低,长期用建议直接用PHP生态里常用的SMTP发信类库,不需要改php.ini、sendmail.ini的全局配置,直接在代码里写SMTP参数就行,认证同样用上面生成的Gmail应用专用密码,错误提示清晰,还能自动处理邮件头编码、附件等场景,比原生mail()好用很多。

现有代码和配置的其他问题

  • 你代码里的发件人头格式不规范,建议把$sender变量改成$sender = "From: 邮箱验证服务 <NatsuDragneelxd42069@gmail.com>";,补全发件人名称能大幅降低被Gmail判定为垃圾邮件的概率
  • 不要反复尝试用Gmail主密码做SMTP认证,不管怎么调端口、加密配置都不可能通过谷歌的安全校验,没有例外
  • 发信失败时直接查看sendmail.ini里配置的debug.log、error.log文件,里面会有完整的连接、认证报错信息,定位问题比页面上的模糊提示快很多

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 11:30:43