Django可正常登录Gmail但SMTP配置下无法发送邮件如何解决
解决方案
1. 优先排查Gmail账号安全配置
谷歌从2022年开始已全面关闭普通个人账号的「低安全性应用访问」开关,如果你之前直接使用账号登录密码作为SMTP密码,现在会被静默拦截:
- 先为你的Google账号开启两步验证
- 进入Google账号「安全」页,找到「应用密码」入口,生成16位专用应用密码,替换掉
EMAIL_HOST_PASSWORD的原有值(不要用日常登录密码) - 如果你使用的是Google Workspace账号,请联系域管理员检查SMTP发信权限、发件人白名单配置
2. 补全Django邮件配置
你当前的配置缺少默认发件人参数,Gmail会拦截发件人与认证账号不一致的请求,且不会返回错误提示,请在settings.py中补充:
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER SERVER_EMAIL = EMAIL_HOST_USER
密码重置功能默认会调用DEFAULT_FROM_EMAIL作为发件人,未配置时会触发静默拦截。
3. 本地调试排查具体错误
进入Django shell执行测试发信代码,开启错误提示定位问题:
from django.core.mail import send_mail send_mail( subject='测试邮件标题', message='测试邮件内容', from_email=EMAIL_HOST_USER, recipient_list=['你的测试收信邮箱地址'], fail_silently=False )
执行后如果有报错可以直接根据错误信息定位,如果无报错但未收到邮件,检查Google账号安全页是否有未授权的访问提醒,手动确认放行即可。
4. 密码重置场景专项检查
- 检查密码重置邮件模板是否包含大量链接、敏感词触发Gmail反垃圾规则,可先替换为纯文本简单内容测试
- 确认密码重置视图没有自定义发件人参数覆盖了全局配置
内容的提问来源于stack exchange,提问作者Saud Zubedi
相关产品推荐
相关产品推荐

