OpenCart 3.0.2.0使用Gmail SMTP发件失败:密码不被服务器接受
解决OpenCart 3.0.2.0 Gmail SMTP "Password not accepted from server!" 报错
Hey,我碰到不少OpenCart用户最近都遇到这个问题——之前Gmail SMTP好好的,突然就报密码不被服务器接受的错,大概率是Google最近收紧了第三方应用的登录权限,结合你的情况,给你几个靠谱的排查和解决方向:
1. 先搞定Gmail账户的安全验证(最关键)
- 开启两步验证(2FA):现在Gmail基本要求第三方应用必须搭配两步验证才能登录,先去你的Google账户「安全」页面开启这个功能。
- 生成应用专用密码:开启2FA后,在同一个安全页面里找「应用专用密码」,选「其他」随便起个名字(比如“OpenCart SMTP”),生成一串16位的密码。把这个密码替换掉你OpenCart后台SMTP设置里的密码——注意这个密码不用输空格,直接复制粘贴就行,别用你的Gmail登录密码,那个现在不好使了。
2. 核对OpenCart的SMTP配置参数
确保你的配置是下面这样的:
- Mail Engine:选SMTP没错
- SMTP Hostname:填
tls://smtp.gmail.com(完整地址,别只写smtp.gmail.com) - SMTP Port:用
587(这个是TLS的标准端口,比465的SSL更适配现在的Gmail) - SMTP Username:你的完整Gmail邮箱(比如xxx@gmail.com,别只写前缀)
- SMTP Password:刚才生成的应用专用密码
3. 检查主机的PHP环境
Linux主机上可能有两个点影响连接:
- openssl扩展是否开启:SSH登录主机,执行
php -m | grep openssl,如果没输出,说明没装这个扩展,联系主机商开启或者自己编译安装——OpenCart的TLS连接全靠它。 - PHP版本是否兼容:OpenCart 3.0.2.0最稳的是PHP 7.2到7.4版本,要是你用的是PHP 8.x,可能和旧版的SMTP类有兼容性问题,导致验证失败,必要的话可以降级PHP版本试试。
4. 临时测试方案(不推荐长期用)
如果上面的方法暂时没生效,可以临时开启Gmail的「低安全性应用访问」——不过这个选项现在默认隐藏,得先在Google账户安全设置里开启「显示不太安全的应用访问选项」。但这个方法有安全风险,只是用来验证是不是权限问题,测试完赶紧关掉,还是用应用专用密码靠谱。
5. 深挖错误细节(如果前面都不行)
要是还搞不定,咱们可以看更详细的日志。打开 /home/MYFOLDERNAME/public_html/system/library/mail/smtp.php,在第206行抛出异常的前面加一行代码,把服务器的具体响应记下来:
// 在throw new Exception那行前添加 error_log('SMTP Server Full Response: ' . $this->getResponse());
然后去主机的PHP错误日志里找这条记录,看看服务器到底返回了啥——比如是不是你的主机IP被Google拦截了,或者TLS版本太低不支持,这样就能针对性解决了。
内容的提问来源于stack exchange,提问作者subhi
相关产品推荐
相关产品推荐

