Django密码重置出现SMTPSenderRefused认证错误求助
Django密码重置SMTP认证失败(SMTPSenderRefused)解决方法
问题核心分析
错误信息里的SMTPSenderRefused和发件人webmaster@localhost是关键:Google SMTP要求发件人必须与登录邮箱一致,同时需要正确的认证凭据。
解决方案步骤
1. 统一发件人配置
在settings.py中添加以下配置,确保发件人地址与SMTP登录邮箱一致:
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER SERVER_EMAIL = EMAIL_HOST_USER
Django默认使用webmaster@localhost作为发件人,Google SMTP会拒绝这种不一致的发件请求。
2. 验证环境变量有效性
确认环境变量USER_EMAIL和USER_PASS已正确配置并能被Django读取。可临时在settings.py中添加打印语句测试:
import os print("EMAIL_USER:", os.environ.get('USER_EMAIL')) print("EMAIL_PASS:", os.environ.get('USER_PASS'))
如果输出为空,需重新配置环境变量(如系统环境变量添加或使用python-dotenv加载.env文件)。
3. 配置Google SMTP认证凭据
Google已禁用普通密码直接登录SMTP,需采用以下两种方式之一:
- 应用专用密码(推荐):为Google账户开启两步验证后,在账户安全设置中生成「应用专用密码」,将此密码作为
EMAIL_HOST_PASSWORD的值。 - 测试环境临时方案:若未开启两步验证,可在Google账户安全设置中开启「不太安全的应用访问」(此选项部分账户已移除,仅建议测试用)。
4. 测试邮件发送配置
使用Django Shell验证SMTP配置是否正常:
python manage.py shell
在Shell中执行:
from django.core.mail import send_mail send_mail( '测试邮件', '这是一封测试邮件', '你的gmail邮箱地址', ['收件人邮箱地址'], fail_silently=False )
若邮件发送成功,再测试密码重置功能即可。
内容的提问来源于stack exchange,提问作者Sahil Tariq
相关产品推荐
相关产品推荐

