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

Python邮件脚本出现smtplib.SMTPAuthenticationError(535)错误的排查与解决

问题分析与修复方案

错误原因

smtplib.SMTPAuthenticationError(535) 本质是Gmail的SMTP认证机制拒绝了登录请求,核心原因有三类:

  • 普通密码无法用于第三方SMTP登录:Gmail目前默认禁止使用账号原密码通过非官方应用登录SMTP服务,哪怕密码完全正确也会触发该错误。
  • 两步验证开启后未使用应用专用密码:如果Gmail账号开启了两步验证,原密码直接失去第三方SMTP登录权限,必须使用Google生成的「应用专用密码」。
  • 账号触发安全拦截:若登录操作存在异常(异地登录、短时间多次请求等),Google会临时拦截请求,需手动在账号安全中心确认操作合法性。

修复步骤

方案1:使用应用专用密码(推荐,适配开启两步验证的账号)

  1. 登录Google账号,进入「安全」设置界面
  2. 找到「应用专用密码」选项(需先开启两步验证才会显示)
  3. 生成新的应用专用密码(可命名为「Python SMTP」便于识别)
  4. 将代码中server.login('email', 'password')里的password替换为生成的应用专用密码

方案2:OAuth2认证适配(适配未开启两步验证且不想开启的情况)

若不想开启两步验证,需通过OAuth2协议完成认证,步骤如下:

  1. 在Google Cloud平台创建项目并启用Gmail API
  2. 创建OAuth客户端ID,下载凭据文件(命名为credentials.json)
  3. 使用google-auth系列库替换原登录逻辑,示例代码:
import smtplib
import os
from google.oauth2.credentials import Credentials
from google.auth.transport.requests import Request
from google_auth_oauthlib.flow import InstalledAppFlow

SCOPES = ['https://www.googleapis.com/auth/gmail.send']

creds = None
# 加载已保存的凭据
if os.path.exists('token.json'):
    creds = Credentials.from_authorized_user_file('token.json', SCOPES)
# 无有效凭据时触发登录流程
if not creds or not creds.valid:
    if creds and creds.expired and creds.refresh_token:
        creds.refresh(Request())
    else:
        flow = InstalledAppFlow.from_client_secrets_file(
            'credentials.json', SCOPES)
        creds = flow.run_local_server(port=0)
    # 保存凭据供后续使用
    with open('token.json', 'w') as token:
        token.write(creds.to_json())

# 连接SMTP并发送邮件
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(creds._id_token, creds.token)

e = 0
while e < 2:
    server.sendmail('你的邮箱@gmail.com',
                '收件人邮箱@xxx.com',
                '邮件内容'
                )
    e += 1
    print("DONE")
server.quit()

额外检查项

  • 登录Google账号查看「安全活动」页面,若有被拦截的登录请求,标记为「本人操作」
  • 确认代码中的邮箱地址无拼写错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 04:15:39