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

Django调用send_email发送邮件报错:ConnectionResetError连接被重置

Django发送邮件出现ConnectionResetError问题排查与解决

问题描述

在Django中使用send_email发送邮件时,尝试Gmail、Hotmail及私人邮箱均返回相同错误,核心异常为ConnectionResetError: [Errno 54] Connection reset by peer,最终触发smtplib.SMTPServerDisconnected。

当前配置

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'mail.privateemail.com'
EMAIL_HOST_USER = 'info@custumemail.com'
EMAIL_HOST_PASSWORD = 'xxxxxx'
EMAIL_USE_TLS = False
EMAIL_PORT = 465

错误日志

File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/smtplib.py", line 398, in getreply
    line = self.file.readline(_MAXLINE + 1)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/socket.py", line 707, in readinto
    return self._sock.recv_into(b)
           ^^^^^^^^^^^^^^^^^^^^^^^
ConnectionResetError: [Errno 54] Connection reset by peer

在处理上述异常期间,发生了另一个异常:

Traceback (most recent call last):
File "/Volumes/mac-etended/pytonDjango/django-example-4/blog/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 56, in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
File "/Volumes/mac-etended/pytonDjango/django-example-4/blog/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Volumes/mac-etended/pytonDjango/django-example-4/blog/blog/views.py", line 64, in post_share
    send_mail(subject, message, 'ddddd@gmail.com', [cd['to']])
File "/Volumes/mac-etended/pytonDjango/django-example-4/blog/venv/lib/python3.12/site-packages/django/core/mail/__init__.py", line 87, in send_mail
    return mail.send()
           ^^^^^^^^^^^
File "/Volumes/mac-etended/pytonDjango/django-example-4/blog/venv/lib/python3.12/site-packages/django/core/mail/message.py", line 298, in send
    return self.get_connection(fail_silently).send_messages([self])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Volumes/mac-etended/pytonDjango/django-example-4/blog/venv/lib/python3.12/site-packages/django/core/mail/backends/smtp.py", line 124, in send_messages
    new_conn_created = self.open()
                       ^^^^^^^^^^^
File "/Volumes/mac-etended/pytonDjango/django-example-4/blog/venv/lib/python3.12/site-packages/django/core/mail/backends/smtp.py", line 80, in open
    self.connection = self.connection_class(
                      ^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/smtplib.py", line 255, in __init__
    (code, msg) = self.connect(host, port)
                  ^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/smtplib.py", line 343, in connect
    (code, msg) = self.getreply()
                  ^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/smtplib.py", line 401, in getreply
    raise SMTPServerDisconnected("Connection unexpectedly closed: "
smtplib.SMTPServerDisconnected: Connection unexpectedly closed: [Errno 54] Connection reset by peer

解决方案

1. 修正SMTP端口与加密方式匹配

端口465对应SSL加密,当前配置未启用SSL导致协议不匹配,修改配置:

EMAIL_USE_TLS = False
EMAIL_USE_SSL = True  # 启用SSL加密
EMAIL_PORT = 465

若服务商支持TLS,也可改用587端口:

EMAIL_USE_TLS = True
EMAIL_PORT = 587

2. 验证邮箱账号权限

  • 确认EMAIL_HOST_PASSWORD正确,部分私人邮箱需使用应用专用密码而非登录密码
  • 检查邮箱服务商是否已开启SMTP服务,部分默认关闭需手动开启

3. 排查网络限制

  • 本地防火墙或代理可能阻断465/587端口,尝试关闭防火墙或切换网络测试
  • 部分云服务器/ISP会封禁SMTP端口,需联系服务商确认

4. 统一发件人账号

send_mail调用中使用的发件人ddddd@gmail.com与配置的EMAIL_HOST_USER不一致,部分服务商要求发件人必须匹配SMTP登录账号:

from django.conf import settings
send_mail(subject, message, settings.EMAIL_HOST_USER, [cd['to']])

5. 测试基础SMTP连接

在终端直接测试连接,排除Django代码问题:

python -c "import smtplib; s = smtplib.SMTP_SSL('mail.privateemail.com', 465); s.login('info@custumemail.com', 'xxxxxx'); s.quit()"

若此命令报错,问题出在网络或邮箱配置,而非Django逻辑。

内容的提问来源于stack exchange,提问作者gmal m hafiz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 22:08:10