谷歌停用低安全应用访问后PHPMailer用Gmail发信方案咨询
PHPMailer对接Gmail发信零改造替代方案
下面几个方案全不用动现有「联系我们」页面的核心发信逻辑、前端交互、表单规则,只需要调配置或者改几行参数就能落地:
- 方案1:用Google应用专用密码替换原账号登录密码(优先选这个,零代码改动)
低安全性应用权限确实下线了,但开了两步验证(2FA)的Google账号照样能用应用专用密码走SMTP发信,和原有PHPMailer配置100%兼容,半行业务代码都不用改。
操作很简单:先给发信用的Gmail账号开两步验证,在账号安全设置里找到「应用专用密码」的生成入口,生成一个16位的专用发信密码,把PHPMailer配置里原来填的Gmail登录密码换成这个16位密码就行,其他参数全不用动,原来怎么写现在还怎么用:
要是用的是Google Workspace企业邮箱,得先让管理员在后台开了允许用户用应用专用密码的权限;个人Gmail只要开了两步验证就能直接找到生成入口,根本没下线,别信网上说Gmail彻底不能用SMTP的误传。$mail->isSMTP(); $mail->Host = 'smtp.gmail.com'; $mail->SMTPAuth = true; $mail->Username = '你的完整Gmail地址'; $mail->Password = '新生成的16位应用专用密码'; // 只需要换这一个值 $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; $mail->Port = 587; - 方案2:把SMTP源换成第三方事务邮件服务
要是因为账号权限问题开不了应用专用密码,也不用重构业务,直接把PHPMailer里填的SMTP服务器地址、端口、认证账号密码,换成第三方事务邮件平台的SMTP接入参数就行。不管是国内的阿里云邮件推送、腾讯云SES,还是国外的SendGrid、Mailgun都支持,用自己网站的域名开通SMTP发信权限,换完连接参数,原来的表单提交、邮件内容拼装、收信规则全能正常跑,不用改上层逻辑。 - 方案3:把SMTP认证方式换成XOAUTH2
要是必须走Gmail原生发信通道、又用不了应用专用密码,也只需要换认证层的代码就行,上层发信逻辑一点不用动。去Google Cloud控制台给对应账号建个OAuth2凭据,拿到客户端ID、客户端密钥、刷新令牌,调用PHPMailer官方自带的XOAUTH2认证类做鉴权就可以,原来的邮件发送、结果返回、页面交互全不用改,也就多写十几行配置代码的事。
三个方案里第一个最省事,全程操作不超过5分钟,连代码都不用改,是维护存量站点的首选。
内容的提问来源于stack exchange,提问作者Egils Robs
相关产品推荐
相关产品推荐

