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

Python Gmail-SMTP脚本Win10+3.6可用,Ubuntu16.04+3.5.2报错

解决Ubuntu 16.04下Python SMTP Gmail登录报错"Please log in via your web browser"的问题

我之前也碰到过一模一样的情况——Windows上跑顺风顺水的Gmail SMTP脚本,放到Ubuntu环境就触发这个登录验证报错,本质是Google的安全机制把陌生的Linux环境当成了风险设备,下面给你几个靠谱的解决步骤:

1. 先解锁Gmail的设备验证限制

Google会把你的Ubuntu环境识别为新的陌生设备,哪怕开了“允许不太安全的应用”,也需要手动解锁一次临时权限:

  • 用浏览器登录你的user@gmail.com账户
  • 进入账户安全设置页面,搜索DisplayUnlockCaptcha这个选项
  • 点击验证按钮,然后立刻运行你的Python脚本,这时候Google会暂时允许这个新设备的登录请求

2. 检查两步验证与应用密码

如果你的Gmail账户开了两步验证,那“允许不太安全的应用”这个选项会直接被隐藏,普通密码根本没法用于SMTP登录:

  • 去Google账户安全设置里找到应用密码选项(只有开启两步验证后才会显示)
  • 生成一个专门的应用密码(选择“邮件”应用,设备类型选“其他”)
  • 把脚本里的"pass"替换成这个生成的应用密码

3. 确认“允许不太安全的应用”设置生效

如果没开两步验证,再去确认一次这个设置:

  • 登录Gmail账户安全页,找到不太安全的应用访问选项
  • 确保开关是打开状态,有时候设置可能因为缓存或网络问题没生效,可以关掉再重新打开一次试试

4. 脚本适配优化(可选)

有时候SMTP的587端口在Linux环境下可能出现连接兼容问题,你可以试试改用SMTP_SSL和465端口,修改脚本里的服务器初始化部分:

try:
    # 替换原有的server初始化代码
    server = smtplib.SMTP_SSL("smtp.gmail.com", 465)
    server.ehlo()
    server.login(user, pwd)
    server.sendmail(FROM, TO, message)
    server.close()
    print ('successfully sent the mail')
except Exception as e:
    print(e)
    print ("failed to send mail")

SMTP_SSL是直接加密连接,能避免starttls步骤可能出现的环境兼容问题。

按照上面的步骤操作,基本就能解决这个报错了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:18:29