Django结合Celery发送邮件出现WinError 10061连接被拒绝问题求助
问题原因
- 核心错误为配置项拼写错误:你在
settings.py中配置SMTP服务器地址时,错误使用了EMAIL_USE作为配置键,Django标准的SMTP服务器地址配置键为EMAIL_HOST。Django读取不到正确的SMTP服务器地址时,默认会尝试连接本机25端口,你的本机没有运行SMTP服务,因此抛出连接被拒绝的报错。 - 附带不影响本次报错的笔误:
celery.py中app.conf.enable_utf = False应为app.conf.enable_utc = False,该配置用来关闭UTC时区使用自定义时区,拼写错误会导致时区配置不生效。
解决方案
- 修正
settings.py邮件配置
将错误行:
EMAIL_USE = "smtp.gmail.com"
替换为正确配置:
EMAIL_HOST = "smtp.gmail.com"
同时检查其他邮件配置项:
EMAIL_HOST_USER需填写完整的Gmail邮箱地址DEFAULT_FROM_EMAIL的邮箱地址需要和EMAIL_HOST_USER保持一致
- 配置Gmail账号访问权限
谷歌目前已禁止普通密码直接登录第三方SMTP服务,需按如下步骤配置:
- 开启你的谷歌账号两步验证功能
- 进入谷歌账号安全设置页面,创建「应用专用密码」
- 将生成的16位应用专用密码,替换
settings.py中EMAIL_HOST_PASSWORD字段的原有登录密码
- 验证配置与启动服务
首先脱离Celery验证邮件功能是否正常,进入Django shell执行如下代码:
from django.core.mail import send_mail send_mail('测试邮件', '测试内容', '你的发件人邮箱地址', ['测试收件人邮箱地址'], fail_silently=False)
如果能正常收到邮件,再启动Celery Worker即可,Windows环境下Celery启动命令为:
celery -A 你的项目名 worker --loglevel=info -P solo
内容的提问来源于stack exchange,提问作者Keba Sarah
相关产品推荐
相关产品推荐

