Django使用Gmail SMTP发邮件报421连接错误该如何解决?
错误根因
该SMTP 421错误核心原因有两类:一是你的Gmail账号没有配置正确的SMTP调用权限,二是短时间内发起的SMTP连接数超过了Gmail的服务限制。
修复步骤
- 修正Gmail SMTP权限配置
现行Gmail规则不支持直接使用账号密码作为SMTP登录凭证,你需要先给对应邮箱账号开启两步验证,之后生成应用专用密码,替换你settings.py中EMAIL_HOST_PASSWORD的取值即可。 - 验证网络连通性
在你部署Django项目的服务器/本地环境命令行执行telnet smtp.gmail.com 587,如果返回连接失败,说明当前网络出口无法访问Gmail SMTP服务,需要更换网络环境或者切换其他SMTP邮件服务商。 - 优化邮件发送逻辑避免超量
报错提示too many connections说明短时间并发请求过多,你可以做两处优化:- 使用
django.core.mail.get_connection复用SMTP连接,避免每次发邮件都新建连接 - 给投资人注册接口增加限流规则,将邮件发送频率控制在Gmail允许的阈值内(普通Gmail账号阈值为100封/分钟)
- 使用
- 本地调试临时方案
开发阶段不需要真实发邮件时,可将EMAIL_BACKEND调整为django.core.mail.backends.console.EmailBackend,邮件内容会直接输出到Django控制台,不会触发SMTP服务调用限制。
内容的提问来源于stack exchange,提问作者Destiny Franks
相关产品推荐
相关产品推荐

