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

Django本地测试遇SMTPRecipientsRefused错误:原因及解决方法

搞定Django邮件发送的SMTP错误

嘿,这个SMTP拒绝的问题我之前帮朋友排查过,咱们一步步来理清楚:

为什么会报错?

你看到的错误提示SMTPRecipientsRefused: {u'my.personal@gmail.com': (553, '5.7.1 <admin@mydomain.com>: Sender address rejected: not owned by user support@mydomain.com')}其实已经把原因说透了:
Namecheap的Private Email服务有个硬性要求——发件人地址必须和你登录SMTP服务器的邮箱账号完全一致。

看你的配置就明白冲突点了:

  • 你用support@mydomain.com作为SMTP登录账号(EMAIL_HOST_USER)
  • 但你把系统默认发件人(DEFAULT_FROM_EMAIL)和服务器告警邮件发件人(SERVER_EMAIL)都设成了admin@mydomain.com

Namecheap的SMTP服务器不认这个发件地址,因为admin@mydomain.com并不是你当前登录的邮箱用户(你登的是support账号),所以直接把你的邮件请求打回来了。

两种解决办法任你选

办法1:统一发件人地址(最简单快速)

直接把DEFAULT_FROM_EMAIL和SERVER_EMAIL改成和EMAIL_HOST_USER一致就行:

######################## # OTHER EMAIL SETTINGS # ########################
ADMIN_EMAIL = "admin@mydomain.com"
SUPPORT_EMAIL = "support@mydomain.com"
DEFAULT_FROM_EMAIL = SUPPORT_EMAIL  # 改成support账号
SERVER_EMAIL = SUPPORT_EMAIL        # 同步修改

这样发件人地址和登录账号完全匹配,Namecheap就不会再拒绝你的请求了。

办法2:给support账号添加发件别名(适合需要用admin邮箱发件的场景)

如果你确实想用admin@mydomain.com作为对外的发件地址,可以登录Namecheap的Private Email后台,给support@mydomain.com账号添加admin@mydomain.com作为发件别名。操作步骤大概是:

  • 登录Namecheap的Private Email管理面板
  • 找到support@mydomain.com这个账号,进入它的设置页面
  • 找到“发件人别名”或者类似的选项(不同版本界面可能叫法略有不同)
  • 添加admin@mydomain.com作为别名并保存
  • 回到Django配置,保持现有DEFAULT_FROM_EMAIL和SERVER_EMAIL不变就行

测试小技巧

修改完配置后,别急着测密码重置页面,先在本地shell里快速测试邮件发送是否正常:

python manage.py shell

然后在shell里执行这段代码:

from django.core.mail import send_mail
send_mail('测试邮件', '这是测试内容', 'support@mydomain.com', ['my.personal@gmail.com'], fail_silently=False)

如果能成功收到测试邮件,说明配置没问题,再去测试密码重置功能就稳了~

内容的提问来源于stack exchange,提问作者Username

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:05:44