You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django无法发送邮件求助:注册流程中验证邮件发送失败

Django注册验证邮件发送失败排查方案

一、核对SMTP配置细节

  • 确认Gmail SMTP协议与端口匹配:
    • SSL协议:EMAIL_USE_SSL = True,EMAIL_PORT = 465
    • TLS协议:EMAIL_USE_TLS = True,EMAIL_PORT = 587
  • 检查EMAIL_HOST是否为'smtp.gmail.com',避免拼写错误
  • 若曾开启两步验证,必须使用应用专用密码替代原密码;关闭两步验证后需确保使用的是当前有效登录密码

二、测试基础邮件发送能力

直接在Django Shell中测试最简邮件发送逻辑,排除业务代码干扰:

from django.core.mail import send_mail
send_mail(
    '测试邮件主题',
    '测试邮件内容',
    '你的Gmail账户@gmail.com',
    ['收件人邮箱@example.com'],
    fail_silently=False,
)

运行后查看终端报错信息,这是定位问题最直接的方式

三、检查user.email_user()调用逻辑

  • 确认user对象的email字段已正确赋值,无空值或拼写错误
  • 验证邮件内容是否存在格式问题(比如未闭合的HTML标签),导致邮件被服务商拦截
  • 若调用email_user()时未指定from_email,需检查DEFAULT_FROM_EMAIL配置是否有效,确保发件人地址符合Gmail要求

四、排查邮件投递拦截问题

  • 检查收件邮箱的垃圾邮件/垃圾箱,验证邮件常被误判为垃圾邮件
  • 查看Gmail账户的「已发送」列表,确认邮件是否从发件端发出(若发件端有记录但收件端无,大概率是被收件服务商拦截)
  • 检查服务器IP是否被列入邮件黑名单,公共服务器IP易出现此类问题

五、验证Token生成逻辑的间接影响

Token生成异常可能导致邮件发送代码未执行,需在视图中添加异常捕获:

try:
    # Token生成与邮件发送代码
    token = UserVerificationTokenGenerator().make_token(user)
    user.email_user(邮件主题, 邮件内容)
except Exception as e:
    print(f"邮件发送错误: {e}")

查看是否有异常抛出导致流程中断

内容的提问来源于stack exchange,提问作者petrukv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 03:22:35