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

Flask对接Gmail SMTP发信报535认证失败错误的解决方法

错误根因

你遇到的535认证错误是Gmail安全策略调整导致的:2022年5月之后Gmail已全量下线「低安全性应用访问」开关,所有第三方客户端直接使用账号主密码登录SMTP的请求都会被直接拦截,和Flask-Mail的配置逻辑无关。

可行解决方案(按适用场景排序)

方案1:使用Gmail应用专用密码(个人账号最快解决方式)

该方案仅适用于个人Gmail账号,要求账号提前开启两步验证(2FA),未开启两步验证的账号不会显示应用专用密码入口:

  • 进入Google账号安全设置页,找到「应用专用密码」选项
  • 应用类型选择「邮件」,设备选择你运行Flask服务的对应设备,点击生成
  • 系统会弹出一串16位的随机密码,该密码仅展示一次,立刻复制保存
  • 将环境变量中MAIL_PASSWORD的值替换为这串16位密码(不要带生成时显示的分隔空格),MAIL_USERNAME保持为完整的Gmail邮箱地址即可,其余配置无需改动
  • 注意:应用密码生成后存在5-10分钟的权限同步延迟,如果刚改完还是报错,等待后重试即可;同时不要使用频繁切换节点的代理连接Gmail SMTP,会被判定为异常登录拦截。

方案2:使用Google Workspace SMTP中继(企业域名账号适用)

如果你使用的是Google Workspace付费企业邮箱,不需要给单个账号开2FA和生成应用密码:

  • 登录Workspace管理员后台,找到SMTP中继配置页
  • 添加你部署Flask服务的出口IP到允许发信列表,配置对应发信域名权限
  • 直接使用分配的中继账号密码配置即可,发信限额比个人账号高,适合生产环境批量发信场景。

方案3:替换为第三方专业邮件发送服务(生产环境首选)

如果你的服务部署在无法稳定连接Gmail SMTP的网络环境,或者需要更高的发信到达率、更高的发信限额,直接替换为第三方邮件服务即可:

  • 可选服务包括SendGrid、Mailgun、国内的腾讯企业邮、阿里邮件推送等
  • 配置逻辑和Gmail完全一致,仅需替换MAIL_SERVER、MAIL_PORT、MAIL_USERNAME、MAIL_PASSWORD四个参数为对应服务商提供的值即可,不会触发Google的账号安全拦截策略。
正确配置参考

调整后的配置如下,敏感信息始终通过环境变量读取,不要硬编码到代码中:

# 建议将smtp.googlemail.com替换为官方推荐的smtp.gmail.com,兼容性更好
app.config['MAIL_SERVER'] = 'smtp.gmail.com'
app.config['MAIL_PORT'] = 587
app.config['MAIL_USE_TLS'] = True
app.config['MAIL_USERNAME'] = os.getenv('MAIL_USERNAME') # 填写完整Gmail地址,格式为xxx@gmail.com
app.config['MAIL_PASSWORD'] = os.getenv('MAIL_PASSWORD') # 填写16位应用专用密码,不要填账号主登录密码
常见踩坑说明
  • 不要再尝试使用账号主密码登录Gmail SMTP,该方式已被完全封禁,必然返回535错误
  • 未开启两步验证的个人账号无法生成应用专用密码,必须先开启2FA才能看到对应入口
  • 应用密码丢失后不需要修改账号主密码,直接在安全设置页删除旧的应用密码重新生成即可
  • 国内服务器直连Gmail SMTP大概率会出现连接超时、连接被重置的问题,这种场景直接选用第三方邮件服务效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 14:24:18