You need to enable JavaScript to run this app. Flutter使用Mailer包发Gmail遇谷歌登录拦截,开启低安全权限仍无效
优惠活动
大模型
产品
解决方案
定价
更多

Flutter使用Mailer包发Gmail遇谷歌登录拦截,开启低安全权限仍无效

核心拦截原因

你碰到的印度用户端触发的「登录尝试被阻止」,本质是谷歌SMTP的风险校验规则触发,和你之前开启的「允许低安全应用访问」权限没有实际关联——谷歌在2022年就已经下线了这个开关对绝大多数个人Gmail账号的实际生效能力。尤其印度地区不少运营商的出口IP在谷歌的风险IP黑名单内,只要从这些IP发起SMTP连接,系统会直接拦截请求,根本不会走到你设置的低安全权限校验分支。

必须完成的配置调整

1. 替换认证方式,使用应用专用密码替代账号常规密码

  • 想正常使用第三方SMTP认证,发信所用的谷歌账号必须先开启两步验证(2SV),未开启两步验证的账号,根本无法生成可用的SMTP认证凭证
  • 开启两步验证后,进入账号安全板块的「应用专用密码」功能区,生成16位长度的专用密码,将代码中原本填写的谷歌账号明文密码,全部替换为该专用密码
  • 这个专用密码仅对指定应用生效,就算泄露也不会影响账号本身的登录权限,是目前谷歌官方认可的、第三方应用通过SMTP发信的唯一合规方式
  • 之前你在安卓模拟器上测试能正常发信,纯粹是因为测试环境的IP地址、网络行为和你账号的常用登录环境匹配,没有触发风险判定;当印度用户从本地网络发起连接时,和你之前的测试环境地理跨度极大,会直接被系统判定为账号被盗用,拦截请求

2. 调整SMTP连接参数,降低异常判定概率

  • 固定使用SSL加密直连端口465建立SMTP连接,不要沿用示例代码中常用的587(STARTTLS)端口,印度地区不少运营商会对587端口的流量做探测,被谷歌识别为非加密连接后会直接触发拦截
  • 代码中明确指定认证机制为AuthenticatorPlain(),避免部分跨境网络场景下的认证协商失败,被判定为异常连接请求
  • 保留mailer包默认的User-Agent标识,不要自定义和浏览器、爬虫类工具类似的UA字符串,避免被系统识别为恶意批量连接

3. 高风险场景的兜底处理

  • 完成前面的配置后,如果仍有部分用户触发拦截,需要在应用的发信失败逻辑中加入提示,引导用户进入自己谷歌账号的「安全-最近安全活动」板块,手动确认本次登录为本人操作
  • 不要在代码中硬编码单个公共发信账号作为全局发信池,这类账号通常会在1-2周内被谷歌限制全区域的SMTP发信权限
常见踩坑提醒
  • 不要再花费时间寻找「允许低安全应用访问」的配置入口,目前该入口对99%的普通Gmail账号处于隐藏状态,就算通过旧路径手动开启,也不会对新的跨区域连接请求生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.02 07:15:03