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

Python smtplib发送Gmail邮件触发SMTPAuthenticationError报错

报错根因

你遇到的smtplib.SMTPAuthenticationError: (534, b'5.7.9 Application-specific password required')是Gmail的安全机制导致的:当前Gmail默认禁止第三方脚本直接使用账号登录密码调用SMTP服务,若账号开启了两步验证,必须使用单独生成的应用专用密码完成SMTP身份校验。
你参考的教程发布时间较早,未同步Gmail近年更新的安全规则,所以按旧教程操作会触发报错。

修复步骤
  • 登录对应Gmail账号,确认账号已开启两步验证,未开启的话先完成两步验证绑定流程
  • 进入账号安全设置页面,找到「应用专用密码」生成入口
  • 应用类型选择「邮件」,设备选择当前运行Python脚本的设备,点击生成即可得到16位长度的应用专用密码
  • 修改代码中smtp.login()的密码参数,将原账号登录密码替换为刚生成的16位应用专用密码,密码不需要保留生成时显示的分隔空格
修正后可运行代码
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib

msg = MIMEMultipart()
msg["from"] = "jaibhamare@gmail.com"
msg["to"] = "leenabhamare@gmail.com"
msg["subject"] = "This is a python program"
msg.attach(MIMEText("This is body", "plain"))

with smtplib.SMTP(host="smtp.gmail.com", port=587) as smtp:
    smtp.ehlo()
    smtp.starttls()
    # 第二个参数替换为你自己生成的16位应用专用密码
    smtp.login("jaibhamare@gmail.com", "xxxxxxxxxxxxxxxx")
    smtp.send_message(msg)
    print("sent")

补充说明:原代码中冗余导入了from email import message,又用message作为邮件实例的变量名,会覆盖导入的模块,修正代码里把实例变量名改成msg避免冲突。另外不要把密码硬编码在代码中,建议通过环境变量读取敏感信息,避免密码泄露。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 21:36:42