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

使用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记录配置正确)。
  • 生成对应账号的应用密码:
    1. 登录myaccount@mydomain.com的Google账号后台,开启两步验证。
    2. 进入「安全」-「应用密码」,生成一个针对「邮件」应用的密码。
  • 调整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登录账号,需按以下设置:

  • 添加并验证发件人别名:
    1. 登录主Gmail账号(myaccount@gmail.com)的网页版,进入「设置」-「账号和导入」-「发送邮件为」。
    2. 添加myaccount@mydomain.com为发件人别名,选择「通过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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 23:08:20