You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

人脸口罩检测脚本SMTPAuthenticationError问题求助:用户名密码正确仍无法发送告警邮件

解决Gmail SMTPAuthenticationError的问题

我之前也踩过Gmail SMTP认证的坑,结合你的情况,给你几个实用的排查和解决方向:

  • 优先使用应用专用密码
    即使你关闭了两步验证,Google现在对普通密码的SMTP登录限制越来越严。建议你去Google账号的安全设置里,找到「应用专用密码」选项(如果找不到,确认账号没有开启高级保护),生成一个专门给Python脚本用的密码,替换代码里的原密码。这个密码是16位的,不需要空格,直接复制粘贴就行。

  • 确认"不太安全的应用访问"是否真的生效
    有时候这个开关切换后需要等几分钟才会同步,或者你可以尝试退出Google账号再重新登录一下。另外要注意,Google已经在逐步淘汰这个选项,长远来看用应用专用密码或者OAuth2会更稳妥。

  • 修复代码里的小疏漏
    你代码里的mail.close少了括号,应该写成mail.close(),这个虽然不是导致认证错误的直接原因,但会导致SMTP连接无法正确关闭,可能引发后续的异常,建议补上。

  • 尝试改用SMTP_SSL连接
    有时候starttls的连接方式会遇到证书或者网络问题,你可以换成直接用SSL连接,代码修改如下:

    if (label == "No Mask"): 
        messagebox.showwarning("Warning","Access Denied. Please wear a Face Mask")
        message = 'Subject: {}\n\n{}'.format(SUBJECT, TEXT)
        # 改用SMTP_SSL直接连接465端口
        mail = smtplib.SMTP_SSL('smtp.gmail.com', 465)
        mail.login('kwerondaa@gmail.com','你的应用专用密码')
        mail.sendmail('kwerondaa@gmail.com','kwerondaa@gmail.com',message)
        mail.close()  # 补上括号
    else:
        pass
    
  • 检查账号是否被临时锁定
    如果之前多次尝试错误登录,Google可能会临时锁定你的SMTP访问权限,你可以去Google账号的「安全活动」页面查看有没有异常登录记录,按照提示解锁账号即可。

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

火山引擎 最新活动