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
相关产品推荐
相关产品推荐

