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

Django + AWS SES 重置密码邮件发送故障排查求助

Django密码重置+AWS SES邮件发送问题排查

以下是代码配置中可能存在的问题及排查方向:

  • 邮件发件人配置不符沙箱要求
    AWS SES沙箱模式下,发件邮箱必须是已验证的身份。检查settings.py中的DEFAULT_FROM_EMAIL或SERVER_EMAIL是否设置为你在SES控制台验证过的邮箱地址。如果密码重置视图中指定了自定义的from_email参数,也要确保该邮箱已验证。

  • 自定义密码重置视图的发送逻辑缺失/错误
    如果你使用了自定义的PasswordResetView,确认是否正确调用了表单的save()方法,并且传递了必要参数(如from_email、email_template_name)。比如:

    # 错误示例:未指定from_email
    form.save(request=request)
    # 正确示例:指定已验证的发件邮箱
    form.save(request=request, from_email=settings.DEFAULT_FROM_EMAIL)
    

    若你完全自定义了发送逻辑,要确保调用的send_mail或send_mass_mail方法参数正确,尤其是收件人、发件人、邮件内容模板路径。

  • 异步邮件发送未配置到位
    若你配置了Celery等异步任务队列处理邮件发送,需确认:

    • 异步任务是否成功触发并执行
    • 任务队列服务是否正常运行
    • 邮件发送任务有没有抛出未捕获的异常(可查看Celery日志)
      沙箱模式下异步发送失败可能不会直接返回错误,导致页面跳转但邮件未发出。
  • Django邮件后端的配置冲突
    虽然你在Shell中用send_mail成功,但要确认密码重置流程是否使用了相同的邮件后端。检查settings.py中的EMAIL_BACKEND是否为django.core.mail.backends.smtp.EmailBackend,且相关SMTP配置(EMAIL_HOST、EMAIL_PORT、EMAIL_HOST_USER、EMAIL_HOST_PASSWORD、EMAIL_USE_TLS)是否完全正确,没有被视图中的代码覆盖。

  • 日志未开启导致无法定位错误
    在settings.py中开启邮件相关的DEBUG日志,查看发送过程中的具体错误:

    LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'handlers': {
            'console': {
                'class': 'logging.StreamHandler',
            },
        },
        'loggers': {
            'django.core.mail': {
                'handlers': ['console'],
                'level': 'DEBUG',
            },
        },
    }
    

    运行密码重置流程后,查看控制台输出,确认邮件是否被实际发送、是否有SES返回的隐藏错误(比如沙箱下的收件人验证问题,即使你以为收件人已验证)。

  • 密码重置模板的链接生成问题(间接影响发送)
    虽然你提到页面能跳转到password_reset_confirm,但如果模板中生成的重置链接格式错误(比如域名、token无效),部分邮件服务商可能会将邮件判定为垃圾邮件,直接拦截。检查password_reset_email.html模板中的{{ protocol }}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %}是否正确生成有效链接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 09:05:08