Gmail停用低安全应用权限后如何通过Python发送邮件?
原有通过SMTP库直连Gmail账号发信的功能失效,根因是Google已正式下线「低安全性应用访问权限」开关,不再允许使用账号明文密码直接通过第三方客户端/脚本调用SMTP服务,问题报错界面如下:
可落地的替代方案
方案1:使用Google应用专用密码(改动成本最低,适配原有代码逻辑)
前置条件:目标Gmail账号必须先开启两步验证,未开启两步验证的账号不会显示应用专用密码生成入口。
操作流程:进入Google账号「安全」设置页,找到「两步验证」板块,下拉到页面最底部选择「应用专用密码」;应用类型选择「邮件」,设备类型选择你运行发信脚本的对应设备,点击生成即可拿到16位长度的专用密码。
代码调整:原有SMTP配置完全不需要修改,仅需把登录环节填写的Gmail账号原密码,替换为刚生成的16位应用专用密码即可。SMTP服务地址保持为smtp.gmail.com,优先使用465端口走SSL连接,也可选择587端口走TLS连接。
注意:应用专用密码仅在生成时完整展示一次,生成后请妥善保存,丢失后重新生成即可。方案2:对接官方Gmail API通过OAuth2.0鉴权发信
若不想开启账号两步验证,可使用Google官方提供的Gmail API完成发信,鉴权走OAuth2.0协议,安全性高于密码鉴权,但代码改动量更大:需要先在Google Cloud控制台创建对应项目,启用Gmail API服务,创建OAuth2.0凭据获取客户端ID、客户端密钥,首次运行时会弹出官方授权页完成账号授权,拿到刷新令牌后后续脚本可自动续期访问令牌,无需重复手动授权。方案3:使用第三方邮件发信服务中转
若不想调整Gmail账号配置,可选择正规第三方邮件发信服务,注册后获取平台提供的SMTP接入地址、鉴权账号、密码,直接替换原有代码里的SMTP配置参数即可,多数服务对个人开发者提供免费发信额度,可满足日常测试、小规模发信需求。
风险提示:请勿使用任何非官方的绕权、破解工具调用Gmail发信接口,此类操作极易触发Google账号风控机制,导致账号发信权限被临时限制甚至永久封禁。
内容的提问来源于stack exchange,提问作者Ran A

