Django发送邮件本地正常服务器报错:SMTPServerDisconnected
解决Django部署后Gmail SMTP连接断开问题
针对你遇到的SMTPServerDisconnected at /contact Connection unexpectedly closed错误,结合本地正常、服务器异常的情况,从Gmail配置和服务器环境两个方向排查:
一、Gmail端配置检查
- 确认两步验证与应用密码有效性:Gmail仅对开启了两步验证的账号提供应用密码权限,若未开启两步验证,应用密码无效,需先开启两步验证后重新生成应用密码替换
EMAIL_HOST_PASSWORD。 - 发件人权限限制:Gmail SMTP默认要求发件人必须是认证的账号本身(即你的
my@gmail.com),当前send_mail中用userEmail作为发件人可能触发拦截。修改代码为:
若需显示用户邮箱作为回复地址,可在邮件内容里添加send_mail('title', 'message', settings.EMAIL_HOST_USER, [settings.EMAIL_HOST_USER], fail_silently=False,)Reply-To头,通过html_message参数或EmailMessage类实现。
二、服务器环境排查
- 测试SMTP连通性:在服务器终端执行以下命令,验证能否正常连接Gmail SMTP服务器:
若无法连通,即使服务商说端口正常,也可能是服务器出站防火墙/安全组未开放587端口,需联系服务商确认出站规则。telnet smtp.gmail.com 587 - DNS解析测试:在服务器上执行
nslookup smtp.gmail.com,检查是否能正常解析到Gmail的SMTP服务器IP,若解析失败,需调整服务器DNS配置(比如换成8.8.8.8)。 - 尝试切换SSL端口:将配置改为使用465端口和SSL协议,测试是否能正常发送:
EMAIL_PORT = 465 EMAIL_USE_SSL = True EMAIL_USE_TLS = False - 检查服务器IP信誉:部分服务器IP可能被Gmail列入黑名单,导致连接被拒绝,可通过发送测试邮件到其他邮箱排查IP是否受限。
内容的提问来源于stack exchange,提问作者Cyrus
相关产品推荐
相关产品推荐

