Python3 SMTP库:Gmail移除低安全应用访问后的方案咨询
Gmail SMTP发信失效修复方案(适配低安全应用权限下线后的规则)
方案1:应用专用密码(代码改动最小,5分钟修复)
这是最快恢复原有发信逻辑的方案,不需要调整现有SMTP发信的代码逻辑,只需要修改账号配置即可:
- 前置要求:给发信使用的Gmail账号开启两步验证,未开启两步验证的账号无法使用该方式
- 操作流程:登录谷歌账号安全中心,完成两步验证开启后,在两步验证设置页底部找到「应用专用密码」入口,选择应用类型为「邮件」,设备根据部署Flask服务的实际场景选择,生成16位长度的专用密码
- 配置修改:将Flask邮件配置中原来填写的Gmail账号登录密码,替换为刚生成的16位专用密码即可,原有SMTP服务地址
smtp.gmail.com、端口(465/SSL 或 587/TLS)配置完全不需要改动
Flask-Mail配置参考:
# 原有配置除密码外全部保留 app.config['MAIL_SERVER'] = 'smtp.gmail.com' app.config['MAIL_PORT'] = 465 app.config['MAIL_USE_SSL'] = True app.config['MAIL_USERNAME'] = 'your-address@gmail.com' app.config['MAIL_PASSWORD'] = '16位应用专用密码' # 此处不要填账号原登录密码
方案2:Gmail API + OAuth2鉴权(谷歌官方长期推荐方案)
如果不想开启两步验证,或者需要更稳定的官方接口能力,可以改用OAuth2鉴权方式,完全绕开账号密码登录的限制:
- 进入谷歌云控制台创建对应项目,搜索启用Gmail API
- 创建OAuth 2.0客户端凭据,获取客户端ID、密钥,给目标Gmail账号授予邮件发送权限
- 拿到有效访问令牌后,既可以直接调用Gmail API发信,也可以在SMTP连接时通过XOAUTH2机制完成鉴权,不受后续谷歌账号安全策略调整的影响
方案3:替换为专业事务邮件服务(生产环境首选)
个人Gmail账号本身就不适合生产环境站点的批量发信场景,哪怕修复了SMTP登录问题,高频发信也很容易触发谷歌风控、被判定为垃圾邮件,送达率没有保障。生产环境建议直接替换为专门的事务邮件服务:
- 可选服务包括SendGrid、Mailgun、国内各大云厂商的邮件推送服务、企业邮箱SMTP服务等
- 绝大多数这类服务都兼容标准SMTP协议,现有Flask的发信代码只需要修改SMTP服务器地址、端口、鉴权账号密码三个配置就能完成迁移,改造成本极低
- 这类服务自带发信成功率统计、退信/投诉处理、垃圾邮件特征规避能力,稳定性远高于个人Gmail账号
注意:不要尝试使用非官方工具、脚本绕过谷歌的安全校验逻辑,这类操作大概率会触发账号风控,导致Gmail账号被临时限制甚至永久封禁。
内容的提问来源于stack exchange,提问作者Pranav Krishna S
相关产品推荐
相关产品推荐

