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

Django使用send_mail发邮件出现ConnectionResetError远程主机强制断开连接错误

修复步骤

  1. 修正settings.py中的错误配置
    你当前的配置存在两个核心错误:
  • EMAIL_HOST填写了本地IP,该参数必须为邮箱服务商提供的SMTP发件服务器地址,Rambler邮箱对应SMTP地址为smtp.rambler.ru
  • EMAIL_PORT使用了字符串格式,Django要求该参数为整数类型,需去掉引号

修正后的配置参考:

EMAIL_HOST = 'smtp.rambler.ru'
EMAIL_PORT = 465
EMAIL_HOST_USER = 's...6@rambler.ru' # 你的邮箱地址保持不变
EMAIL_HOST_PASSWORD = '.....' # 若普通登录密码失效,可在Rambler邮箱安全设置中生成应用专用密码填入
EMAIL_USE_TLS = False 
EMAIL_USE_SSL = True
# 新增以下两个配置,避免被邮件服务商判定为异常发送
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
SERVER_EMAIL = EMAIL_HOST_USER
  1. 调整views.py的发件逻辑
    多数邮件服务商(包括Rambler)会校验发件人地址和认证账号的一致性,你原来用用户提交的邮箱作为发件人会触发校验拦截,修改逻辑如下:
from django.shortcuts import render
from django.core.mail import send_mail
from .forms import ContactForm
from django.conf import settings

def contact(request):
    form = ContactForm
    if request.method == 'POST': 
        message_name = request.POST.get('name') 
        message_email = request.POST.get('email') 
        message = f"留言人姓名:{message_name}\n联系邮箱:{message_email}\n留言内容:{request.POST.get('message')}"
        send_mail(
            subject=f"网站新留言:{message_name}",
            message=message,
            from_email=settings.EMAIL_HOST_USER,
            recipient_list=['s****6@rambler.ru'],
            reply_to=[message_email] # 设置后直接回复邮件即可发送给留言用户
        )
    return render(request, 'contact.html', {'form': form})
  1. 额外排查项
    如果修改后仍报错,可依次检查:
  • 本地防火墙、杀毒软件是否拦截了465端口的出站连接
  • 你所在的网络运营商是否封禁了465端口的对外连接
  • Rambler邮箱是否开启了第三方客户端登录权限,若开启后仍失效,请使用应用专用密码而非账号登录密码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:24:01