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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 06:22:45