使用Djoser+Mailtrap SMTP注册用户时遇Connection Refused 500错误
问题排查与修复
从错误日志和配置文件分析,核心问题是Django无法正确读取SMTP服务器地址,导致尝试连接默认的localhost(127.0.0.1)被拒绝,结合你的配置,有以下几个关键问题需要修正:
1. 错误的SMTP主机配置变量
你的配置中错误地将EMAIL_HOST写成了EMAIL:
# 错误写法 EMAIL = env("EMAIL_HOST") # 正确写法 EMAIL_HOST = env("EMAIL_HOST")
Django的SMTP后端依赖EMAIL_HOST变量指定服务器地址,当前错误配置会让Django使用默认值localhost,这就是telnet能正常连接但代码里连接被拒绝的原因——代码根本没指向Mailtrap的服务器。
2. 拼写错误的发件人配置
DAFAULT_FROM_EMAIL存在拼写错误,正确的变量名是DEFAULT_FROM_EMAIL:
# 错误写法 DAFAULT_FROM_EMAIL = "XXXX" # 正确写法 DEFAULT_FROM_EMAIL = "XXXX"
这个错误不会直接导致连接拒绝,但会影响邮件的发件人显示,建议一并修正。
3. 重复的端口配置(可选优化)
你在配置中重复定义了EMAIL_PORT:
EMAIL_PORT=2525 # 后面又重新赋值 EMAIL_PORT = env("EMAIL_PORT")
如果环境变量EMAIL_PORT值为2525,重复定义不会有问题,但为了配置整洁,建议保留从环境变量读取的方式(更灵活)。
修复后验证步骤
- 保存修正后的配置文件
- 重启Django开发服务器
- 再次用Insomnia发送注册请求
- 检查Mailtrap收件箱,确认激活邮件是否正常发送
内容的提问来源于stack exchange,提问作者subhro
相关产品推荐
相关产品推荐

