使用Django+Gmail后端发送自定义域名邮件遇认证错误求助
解决Django用Gmail SMTP发送自定义域名邮件的验证问题
核心问题分析
当EMAIL_HOST_USER设为自定义域名邮箱(myaccount@mydomain.com)时出现535验证错误,但用主Gmail账号(myaccount@gmail.com)能正常发送,本质是SMTP登录账号的权限/配置不匹配,分两种场景处理:
场景1:自定义域名绑定Google Workspace(原G Suite)
如果你的自定义域名是通过Google Workspace创建的企业邮箱,按以下步骤操作:
- 验证Workspace账号状态:确保
myaccount@mydomain.com是已激活的Workspace账号,域名在Workspace后台完成了DNS验证(MX记录、SPF记录配置正确)。 - 生成对应账号的应用密码:
- 登录
myaccount@mydomain.com的Google账号后台,开启两步验证。 - 进入「安全」-「应用密码」,生成一个针对「邮件」应用的密码。
- 登录
- 调整Django配置:
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend" EMAIL_HOST = "smtp.gmail.com" EMAIL_HOST_USER = "myaccount@mydomain.com" # 用Workspace账号邮箱 EMAIL_HOST_PASSWORD = "生成的应用密码" EMAIL_PORT = 587 EMAIL_USE_TLS = True DEFAULT_FROM_EMAIL = "myaccount@mydomain.com" # 可选,统一发件人显示 - 发送代码保持不变,此时SMTP登录用Workspace账号,发件人显示自定义域名邮箱。
场景2:普通Gmail账号添加自定义域名别名/辅助邮箱
如果你的自定义域名邮箱是普通Gmail账号的辅助邮箱或别名,无法直接用它作为SMTP登录账号,需按以下设置:
- 添加并验证发件人别名:
- 登录主Gmail账号(
myaccount@gmail.com)的网页版,进入「设置」-「账号和导入」-「发送邮件为」。 - 添加
myaccount@mydomain.com为发件人别名,选择「通过Gmail发送」,完成邮箱验证(点击收到的验证链接)。
- 登录主Gmail账号(
- 调整Django配置:
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend" EMAIL_HOST = "smtp.gmail.com" EMAIL_HOST_USER = "myaccount@gmail.com" # 必须用主Gmail账号 EMAIL_HOST_PASSWORD = "主账号的应用密码" EMAIL_PORT = 587 EMAIL_USE_TLS = True DEFAULT_FROM_EMAIL = "myaccount@mydomain.com" # 指定显示的发件人邮箱 - 发送代码中,发件人参数可以填
DEFAULT_FROM_EMAIL的值,收件人看到的发件人就是自定义域名邮箱,实际SMTP登录用主Gmail账号。
常见排查要点
- 确保应用密码是针对对应账号生成的,Workspace账号的应用密码不能用主Gmail账号的,反之亦然。
- 检查环境变量中的账号和密码是否有拼写错误,注意邮箱域名的正确性。
- 若仍有验证错误,登录对应邮箱网页版,查看是否有安全锁定提示,解除后重新生成应用密码。
内容的提问来源于stack exchange,提问作者fr0zie
相关产品推荐
相关产品推荐

