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

Django发送邮件遇WinError 10060错误求助

Django发送Gmail邮件报[WinError 10060]的排查方案

你遇到的是本地Django环境无法连接Gmail SMTP服务器的超时错误,以下是针对性排查步骤:

1. 检查SMTP端口是否被拦截

[WinError 10060]本质是连接超时,大概率是端口被本地防火墙、杀毒软件或运营商屏蔽:

  • 用命令测试端口连通性:telnet smtp.gmail.com 587,如果无法连接,说明端口被挡
  • 临时关闭防火墙/杀毒软件重试,或者切换到SSL端口465:
    修改settings.py配置:
    EMAIL_USE_SSL = True
    EMAIL_PORT = 465
    

2. 确认Gmail账户的SMTP相关权限

即使已生成应用密码,仍需检查:

  • 确保账户已开启两步验证(应用密码仅对开启2FA的账户有效)
  • 登录Gmail后台,进入「设置」→「转发和POP/IMAP」,确认「IMAP访问」已启用
  • 检查应用密码的生成是否对应正确的设备类型(选「其他」即可)

3. 排除代理/网络工具干扰

本地运行的代理、VPN工具可能导致SMTP连接异常,关闭所有代理软件后重新测试。

4. 验证Django代码逻辑是否正常

先切换到控制台邮件后端,排除代码问题:
修改settings.py:

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

访问视图后查看控制台是否输出邮件内容,若正常则说明代码逻辑无问题,问题集中在SMTP连接环节。

5. 绕过Django直接测试SMTP连接

用纯Python脚本测试Gmail SMTP,确认是否是Django配置之外的问题:

import smtplib
from email.mime.text import MIMEText

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

try:
    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.starttls()
    server.login('你的邮箱@gmail.com', '你的应用密码')
    server.send_message(msg)
    server.quit()
    print('邮件发送成功')
except Exception as e:
    print(f'错误信息: {e}')
  • 若脚本报错,说明是网络或Gmail账户配置问题
  • 若脚本成功,检查Django的settings.py是否有拼写错误(比如变量名大小写、多余空格)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 08:40:11