使用Workspace域名别名+应用密码时出现Gmail SMTP认证错误
问题解答
为什么别名无法用应用密码认证?
Google的应用密码是绑定主账号的,邮箱别名本身没有独立的账号系统,它只是主账号的一个附属身份。SMTP服务器只认主账号的凭据,所以用别名作为用户名去认证必然会触发SMTPAuthenticationError,这是正常逻辑——别名不能单独生成或使用应用密码。
实现用别名自动发邮件的方法
核心思路是:用主账号的应用密码完成SMTP登录认证,然后在发送邮件时指定别名作为发件人身份,具体操作如下:
1. 确认前置条件
- 主账号已开启2SV,生成了有效的应用密码(你已完成这步)
- 别名已在Gmail设置中添加、验证,且设为默认发件身份(你已手动发送正常,这步没问题)
2. 修改yagmail代码
不需要更换登录凭据,依然使用主账号邮箱和对应的应用密码,只需要在发送时指定sender参数为你的别名邮箱:
方式一:发送时指定别名
import yagmail # 用主账号和应用密码初始化SMTP yag = yagmail.SMTP('your-main@gmail.com', 'your-app-password') # 发送邮件时指定sender为别名 yag.send( to='target@example.com', subject='测试邮件', contents='这是通过别名发送的邮件', sender='your-alias@domain.com' )
方式二:初始化SMTP时默认别名
如果每次都要用同一个别名发送,可以在初始化时直接指定sender:
import yagmail yag = yagmail.SMTP( user='your-main@gmail.com', password='your-app-password', sender='your-alias@domain.com' ) # 后续发送无需再指定sender yag.send(to='target@example.com', subject='测试', contents='内容')
关键注意点
- 永远不要用别名作为SMTP的登录
user参数,必须用主账号邮箱 - 应用密码必须是主账号生成的,别名没有独立的应用密码权限
- 确保别名已经在Gmail中完成验证,否则即使代码指定,发送也可能失败
内容的提问来源于stack exchange,提问作者brian
相关产品推荐
相关产品推荐

