使用Django通过Gmail账户发送邮件失败,如何排查解决?
Django通过Gmail发送邮件无法接收的解决方案
以下是针对你代码问题的具体修复步骤:
1. 替换普通密码为应用专用密码
Gmail目前禁止第三方应用使用账号普通密码登录SMTP服务,必须先开启两步验证,再创建应用专用密码:
- 登录你的Google账号,开启两步验证;
- 进入账号安全设置,找到「应用专用密码」选项;
- 创建一个针对Django的专用密码,将这个密码替换
settings.py中的EMAIL_HOST_PASSWORD值。
2. 保持发件邮箱一致性
views.py中的from_email必须和settings.py里的EMAIL_HOST_USER完全一致,否则会被Gmail拦截。修改views.py代码:
from_email = "你的Gmail完整地址" # 和settings中的EMAIL_HOST_USER保持一致
3. 验证SMTP配置(可选端口切换)
当前的587端口+TLS配置是正确的,但如果你的网络屏蔽了587端口,可以尝试切换到465端口+SSL加密:
# settings.py中修改 EMAIL_PORT = 465 EMAIL_USE_SSL = True EMAIL_USE_TLS = False
4. 查看Django错误日志排查
你设置了fail_silently=False,当发送失败时Django会抛出具体错误(比如SMTP认证失败、连接超时等),查看控制台输出或Django日志,能快速定位问题根源。
5. 检查收件方垃圾邮件箱
很多时候邮件并没有丢失,只是被收件邮箱的反垃圾系统归类到了垃圾邮件/促销邮件文件夹,让收件方检查这些位置。
内容的提问来源于stack exchange,提问作者Joseph Morakinyo
相关产品推荐
相关产品推荐

