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

Python Gmail邮件发送脚本无法验证用户名与应用密码问题排查

问题原因与解决方案

错误原因分析

这个535错误是Gmail拒绝了登录凭证,核心问题有以下几点:

  • 邮箱格式错误:你填写的sender_email是sendingemail@gmail,缺少.com后缀,Gmail邮箱必须是完整的xxx@gmail.com格式。
  • 登录凭证不符合要求:Gmail当前默认禁止直接用账号密码登录第三方应用,必须使用应用专用密码,且前提是账号已开启两步验证;若未开启两步验证,“不太安全的应用访问”选项也已逐步被Gmail取消,因此应用专用密码是唯一合规的方式。

修正后的可运行脚本

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

# 修正邮箱格式为完整Gmail地址
sender_email = 'sendingemail@gmail.com'
# 替换为你的Gmail应用专用密码
sender_password = 'your_app_specific_password'
receiver_email = 'receiveremail@gmail.com'
subject = 'Python自动化测试邮件'
message = '这是通过Python脚本自动发送的测试邮件内容。'

msg = MIMEMultipart()
msg['From'] = sender_email
msg['To'] = receiver_email
msg['Subject'] = subject
# 添加utf-8编码支持中文,避免乱码
msg.attach(MIMEText(message, 'plain', 'utf-8'))

smtp_server = 'smtp.gmail.com'
smtp_port = 587

try:
    server = smtplib.SMTP(smtp_server, smtp_port)
    server.starttls()  # 加密连接
    server.login(sender_email, sender_password)
    text = msg.as_string()
    server.sendmail(sender_email, receiver_email, text)
    print('邮件发送成功')
except Exception as e:
    print('邮件发送失败,错误信息:', str(e))
finally:
    # 避免登录失败时server未初始化导致的quit报错
    if 'server' in locals():
        server.quit()

关键操作步骤

  • 修正邮箱格式:确保sender_email是完整的xxx@gmail.com格式。
  • 生成应用专用密码:
    1. 登录Gmail账号,开启两步验证(必须先完成此步骤才能生成应用专用密码)。
    2. 进入账号安全设置,找到“应用专用密码”选项,生成一个仅用于该Python脚本的密码,替换脚本中的sender_password。
  • 中文编码优化:在MIMEText中指定utf-8编码,避免邮件内容出现中文乱码。
  • 异常处理优化:在finally块中先判断server是否存在,防止登录失败时调用quit()引发额外错误。

接收测试邮件

脚本发送成功后,接收方邮箱即可收到邮件;若未在收件箱找到,可检查垃圾邮件文件夹,自动化发送的邮件可能被系统归类为垃圾邮件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 07:15:14