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

使用Django发送邮件持续出现SMTPConnectError报错如何排查

Django 实现邮件功能报 SMTPConnectError 修复方案

SMTPConnectError 是连接SMTP服务器阶段触发的错误,和账号密码校验、邮件内容逻辑无关,按以下顺序排查即可解决:

  • 核对SMTP配置的端口与加密方式匹配关系
    两类通用配置组合不要搞混,两个加密参数不可同时设为True:
    • 465端口:必须搭配EMAIL_USE_SSL = True
    • 587端口:必须搭配EMAIL_USE_TLS = True
      同时确认EMAIL_HOST填写正确,比如QQ邮箱对应smtp.qq.com、163邮箱对应smtp.163.com、Gmail对应smtp.gmail.com,不要混用不同服务商的SMTP地址。
      可参考的正确配置模板:
    # settings.py 邮件配置参考
    EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
    EMAIL_HOST = '替换为你用的邮箱SMTP地址'
    EMAIL_PORT = 465
    EMAIL_USE_SSL = True
    EMAIL_HOST_USER = '你的完整发信邮箱地址'
    EMAIL_HOST_PASSWORD = '邮箱SMTP服务授权码' # 注意不是邮箱日常登录密码
    DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
    
  • 验证本地到SMTP服务器的网络连通性
    在运行Django服务的机器上执行端口连通性测试,替换为你配置的HOST和PORT值:
    telnet 你配置的EMAIL_HOST 你配置的EMAIL_PORT
    
    如果telnet连接直接失败,说明是本地防火墙、公司网络策略、云服务器安全组拦截了对应出站端口,先放通规则再测试。
  • 确认邮箱侧SMTP服务已开启
    主流公共邮箱默认关闭SMTP发信权限,需要先登录邮箱网页端,在账号安全/设置页面找到SMTP服务选项,手动开启服务后生成专属授权码,将配置里的EMAIL_HOST_PASSWORD替换为该授权码,不要使用邮箱登录密码。
  • 排除视图层代码逻辑问题
    暂时将邮件后端切换为控制台模式,启动服务触发送信逻辑,如果控制台能正常打印出邮件完整内容,说明views.py里的发信逻辑没有问题,故障点完全在SMTP配置或网络层:
    # 调试用配置,邮件不会实际发出,直接打印在控制台
    EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 19:39:16