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

如何解决Django发送邮件时的TimeoutError超时错误

Django发送邮件超时错误(WinError 10060)排查方案

核心原因

这个错误说明你的Django应用无法成功连接到配置的SMTP邮件服务器,大概率是配置问题或网络限制导致的。

具体排查步骤

  • 核对SMTP基础配置
    打开项目settings.py,确认EMAIL_HOST、EMAIL_PORT、EMAIL_USE_TLS/EMAIL_USE_SSL参数和邮箱服务商要求一致:

    • QQ邮箱:EMAIL_HOST = 'smtp.qq.com',EMAIL_PORT = 465,EMAIL_USE_SSL = True
    • 163邮箱:EMAIL_HOST = 'smtp.163.com',EMAIL_PORT = 465,EMAIL_USE_SSL = True
      注意:TLS和SSL不能同时开启,端口要对应(通常587对应TLS,465对应SSL)
  • 开启邮箱SMTP服务并使用授权码
    主流邮箱默认关闭SMTP服务,且不能用登录密码,必须用服务商生成的授权码作为EMAIL_HOST_PASSWORD:

    • QQ邮箱:在设置→账号中开启POP3/SMTP服务,生成授权码
    • Gmail:需开启两步验证,再生成应用专用密码
  • 排查网络限制

    • 临时关闭本地防火墙或杀毒软件,用telnet smtp.qq.com 465测试是否能连接服务器(能连接说明网络无阻塞)
    • 若使用代理,确认代理允许访问SMTP端口,或暂时关闭代理测试
  • 检查发送代码逻辑
    确保send_mail参数格式正确,比如收件人是列表格式,示例:

    from django.core.mail import send_mail
    
    send_mail(
        '测试主题',
        '邮件内容',
        '你的发件邮箱@xxx.com',
        ['收件人邮箱@xxx.com'],
        fail_silently=False,
    )
    

额外测试方案

如果以上步骤无效,先用Python原生smtplib写个简单脚本,排除Django框架问题:

import smtplib
from email.mime.text import MIMEText

msg = MIMEText('测试内容')
msg['Subject'] = '测试邮件'
msg['From'] = '你的邮箱@xxx.com'
msg['To'] = '收件人邮箱@xxx.com'

server = smtplib.SMTP_SSL('smtp.qq.com', 465)
server.login('你的邮箱@xxx.com', '授权码')
server.send_message(msg)
server.quit()

脚本报错则问题在邮箱配置或网络;脚本成功则回到Django配置中排查细节。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 02:22:44