使用Yagmail发送邮件时遇SMTPAuthenticationError报错求助
解决Yagmail连接Google邮箱的SMTPAuthenticationError问题
这个535认证错误是Google邮箱的安全机制导致的——现在Google已经不再允许直接使用邮箱的原始密码登录第三方邮件客户端(比如Yagmail)了,我给你整理了两种解决方案,优先推荐第一种:
推荐方案:使用应用专用密码(最安全)
这是Google官方认可的方式,前提是你的Google账号已经开启了两步验证:
- 登录你的Google账号,进入「安全」设置页面
- 找到「应用专用密码」选项(它会在两步验证的下方,只有开启两步验证后才会显示)
- 选择应用类型为「邮件」,设备随便选一个(比如选「其他」,自定义一个名称即可)
- 点击生成,你会得到一个16位的密码(不用管中间的空格,直接复制使用)
- 把你代码里的
'admin'替换成这个生成的应用专用密码
修改后的代码示例:
import yagmail # 注册时使用完整邮箱地址和应用专用密码 yagmail.register('absenceuser@gmail.com', '生成的16位应用专用密码') # 初始化SMTP时建议带上密码,确保认证流程顺畅 yag = yagmail.SMTP('absenceuser@gmail.com', '生成的16位应用专用密码') yag.send('samuel.louismarie@gmail.com', 'absence', 'Vous n avez pas declarer vos absences')
注意:你的原代码里yagmail.SMTP('absenceuser')只写了用户名,最好改成完整的邮箱地址(比如absenceuser@gmail.com),避免系统识别出错。
备选方案:开启「不太安全的应用访问」(不推荐)
如果你暂时不想开启两步验证,可以尝试这个选项,但Google已经默认禁用了它,而且会降低账号安全性:
- 进入Google账号的「安全」设置
- 找到「不太安全的应用访问」选项,手动开启它
- 之后你就可以使用邮箱的原始密码进行认证,但这种方式会增加账号被盗的风险,不建议长期使用
最后再检查下:确保你的发送邮箱地址拼写正确,接收邮箱地址也没有错误。
内容的提问来源于stack exchange,提问作者samuel L-M
相关产品推荐
相关产品推荐

