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

Django发送验证邮件触发SMTPConnectError错误如何修复?

错误原因

你触发的SMTPConnectError (421, b'service not available (connection refused, too many connections)')是Gmail SMTP服务直接拒绝了你的连接请求,和你使用的发信调用方法无关,问题出在权限配置、网络连通性或连接频率限制三类场景。

修复方案

  • 优先修复Gmail账号权限配置

    目前Gmail已经不再支持直接用账号登录密码调用SMTP服务,你需要按以下规则调整配置:
    1. 先为你的Gmail账号开启两步验证
    2. 进入谷歌账号安全设置页,生成应用专用密码,将settings.py中EMAIL_HOST_PASSWORD的值替换为生成的16位专用密码,不要继续使用原账号登录密码
  • 检查本地网络连通性

    如果你在国内网络环境下开发,Gmail SMTP服务的连接会被限制,你可以先在本地命令行执行telnet smtp.gmail.com 587测试端口连通性:
    • 如果连通失败,开发阶段可以临时将邮件后端替换为控制台输出配置,方便调试逻辑,无需真的发送邮件:
      # 替换settings.py中原EMAIL配置段
      EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
      
    • 也可以替换为国内邮箱的SMTP服务(比如QQ邮箱、网易邮箱),适配国内网络环境
  • 优化代码逻辑避免触发频率限制

    你当前的代码逻辑是每次收到注册请求就新建一个SMTP连接,短时间内请求量过高就会触发Gmail的连接频率限制,你可以做两处调整:
    1. 将user.save()方法移动到send_email.send()之前,避免发信失败时已创建的用户数据无法落库
    2. 线上环境可以把发信逻辑改为异步任务处理,控制发信频率,同时避免发信耗时阻塞注册请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:09:03