Django项目线上发邮件报Incorrect authentication data如何解决
Django SMTP 535认证错误(本地正常线上失效)解决方案
- Gmail 配置修正
Gmail 自2022年起已经全面停止支持「低安全性应用访问」功能,你之前开启的该配置已经失效,需要按以下步骤调整:- 先为你的Google账号开启两步验证
- 生成应用专用密码,将
EMAIL_HOST_PASSWORD替换为该16位应用专用密码即可,不需要修改其他配置
- 线上服务器端口/网络排查
本地正常线上报错的核心原因90%都是服务器出站端口被限制:- 先登录线上服务器,执行命令
telnet gmail.com 465或者openssl s_client -connect gmail.com:465测试端口连通性,如果无法连接,说明你的云服务商/机房默认封禁了SMTP出站端口,需要到服务商控制台申请解封465、587端口 - 检查线上服务器的防火墙规则,确认没有主动拦截SMTP出站请求
- 先登录线上服务器,执行命令
- cpanel邮箱配置排查
- 确认cpanel侧的SMTP服务允许你线上服务器的IP访问,很多cpanel默认开启了SMTP源IP限制,需要将线上服务器IP加入白名单
- 部分cpanel的SMTP主机不是
mail.你的域名,需要到cpanel的邮件配置页确认正确的SMTP主机地址,避免填错 - 确认
DEFAULT_FROM_EMAIL和EMAIL_HOST_USER完全一致,cpanel不允许发件人和认证账号不一致
- 配置准确性校验
很多部署场景下邮件配置是通过环境变量注入的,很容易出现配置值错误:
登录线上服务器进入Django Shell,执行以下代码确认配置和本地测试的配置完全一致:
重点检查密码是否多了空格、换行符,或者账号拼写错误。from django.conf import settings print("邮箱账号:", settings.EMAIL_HOST_USER) print("邮箱密码:", settings.EMAIL_HOST_PASSWORD) print("SMTP主机:", settings.EMAIL_HOST) print("SMTP端口:", settings.EMAIL_PORT)
内容的提问来源于stack exchange,提问作者itna sakib
相关产品推荐
相关产品推荐

