Google停用低安全应用访问后如何使用flask-mail发送邮件
谷歌从2022年5月起就全量下线了「低安全应用访问」的开关,所有谷歌账号都无法再找到该功能的启用/禁用入口,对应界面状态如下:
以下是可正常使用flask-mail实现Gmail发信的可行方案:
方案1:使用两步验证+应用专用密码(个人项目首选,改造成本最低)
这个方案不需要改动现有flask-mail的核心发信逻辑,只需要调整账号配置和替换密码即可:
- 登录对应Gmail账号,进入账号安全设置页,找到「两步验证」选项,按照页面指引完成身份校验,开启两步验证功能
- 两步验证开启完成后,安全设置页会自动出现「应用专用密码」的入口,进入该页面后,应用类型选择「邮件」,设备选择你运行flask服务的对应设备,点击生成即可得到16位的应用专用密码
- 修改flask-mail的配置项:原有SMTP服务器保持
smtp.gmail.com不变,端口根据你用的协议选465(对应SSL加密)或587(对应TLS加密),将原先配置的邮箱登录密码替换为刚生成的16位应用专用密码即可,注意密码不需要手动去掉生成时显示的分隔空格,直接复制粘贴到配置里就能正常识别
注意:如果你的Gmail是企业/教育组织分配的账号,需要先确认组织管理员没有关闭两步验证和应用专用密码的使用权限,否则该方法无法使用。
方案2:对接Gmail OAuth2.0认证(生产环境首选,稳定性最高)
如果账号受组织策略限制无法开启两步验证,或者担心后续安全策略调整影响发信,可以改用官方OAuth2.0认证方式对接SMTP:
- 进入谷歌云控制台新建项目,搜索启用Gmail API服务,在凭证管理页创建OAuth2.0客户端ID,获取对应的
client_id、client_secret,完成OAuth授权流程拿到refresh_token - 调整flask-mail的SMTP认证逻辑,在建立SMTP连接时使用XOauth2认证模式传入上述凭证,不再使用固定密码认证
- 该方案初次配置流程相对繁琐,但是完全符合谷歌的安全规范,不会出现被判定为异常登录拦截发信的问题,适合正式上线的生产服务使用。
方案3:更换第三方SMTP邮件服务(最省事,无谷歌账号限制)
如果不想折腾谷歌账号的安全配置,可以直接更换支持标准SMTP协议的第三方邮件发信服务:
- 可选的服务包括腾讯企业邮、阿里企业邮、各类第三方邮件推送服务,个人开发测试用的话大部分服务都有免费发信额度
- 只需要在flask-mail配置里替换成对应服务商提供的SMTP服务器地址、端口、发信账号、授权码即可,原有发信代码不需要做任何修改,配置完就能直接用。
内容的提问来源于stack exchange,提问作者alex
相关产品推荐
相关产品推荐

