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

Django使用SMTP发送邮件出现SMTPServerDisconnected错误的解决求助

Django SMTP发送邮件出现SMTPServerDisconnected异常的原因与解决方法

常见成因

  • SMTP配置参数冲突:当前配置混用了SSL端口(465)和TLS开关,协议不匹配导致服务器主动断开连接
  • Google账号权限验证失败:普通密码无法通过Google的SMTP验证,开启两步验证的账号必须使用应用专用密码
  • 网络/防火墙限制:服务器或本地环境的防火墙、服务商屏蔽了SMTP端口(465/587),连接建立后被强制关闭
  • 账号信息错误:邮箱账号或密码填写错误,服务器验证不通过时会断开连接

解决步骤

1. 修正SMTP配置参数

根据协议选择正确的配置组合,二选一即可:

  • SSL协议(端口465):
    EMAIL_BACKEND = 'django_smtp_ssl.SSLEmailBackend'
    EMAIL_HOST = 'smtp.gmail.com'
    EMAIL_PORT = 465
    EMAIL_USE_SSL = True  # 替换原有的EMAIL_USE_TLS = True
    EMAIL_HOST_USER = 'your_email@gmail.com'
    EMAIL_HOST_PASSWORD = '你的应用专用密码'
    DEFAULT_FROM_EMAIL = 'your_email@gmail.com'
    
  • TLS协议(端口587):
    EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
    EMAIL_HOST = 'smtp.gmail.com'
    EMAIL_PORT = 587
    EMAIL_USE_TLS = True
    EMAIL_HOST_USER = 'your_email@gmail.com'
    EMAIL_HOST_PASSWORD = '你的应用专用密码'
    DEFAULT_FROM_EMAIL = 'your_email@gmail.com'
    

2. 配置Google账号的应用专用密码

若Google账号开启了两步验证,必须生成应用专用密码:

  • 登录Google账号,进入「安全」设置页面
  • 找到「应用密码」选项(需开启两步验证才能看到)
  • 选择「邮件」作为应用类型,生成专用密码后替换配置中的EMAIL_HOST_PASSWORD

3. 检查网络与端口可用性

用telnet命令测试端口连通性:

telnet smtp.gmail.com 465
# 或测试587端口
telnet smtp.gmail.com 587

若连接失败,说明端口被屏蔽,需联系服务器服务商解封,或切换到587端口尝试。

4. 测试邮件发送

使用Django Shell快速验证配置是否生效:

from django.core.mail import send_mail
send_mail(
    '测试邮件',
    '这是测试内容',
    'your_email@gmail.com',
    ['收件人邮箱'],
    fail_silently=False,
)

根据返回的具体错误信息,进一步排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 08:52:45