python - Django PasswordResetView - Gmail 电子邮件未发送
问题描述
我使用带有提交按钮的模板设置 PasswordResetView,我还设置了使用 Gmail 帐户发送的必要配置,但是当我尝试将密码重置发送到电子邮件时,控制台返回 302 响应并且没有收到电子邮件. 我已经允许在我的 gmail 帐户中使用不太安全的应用程序,但它仍然不发送任何电子邮件。以下是我的设置的详细信息。
网址:
path('password-reset/', auth_views.PasswordResetView.as_view(template_name='users/password_reset.html'), name='password_reset'),
设置.py:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'my@gmail.com'
EMAIL_HOST_PASSWORD = 'mypass'
重置密码模板:
{% extends "blog/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
<div class="content-section">
<form method="POST">
{% csrf_token %}
<fieldset class="form-group">
<legend class="border-bottom mb-4 pb-2">Reset Password</legend>
{{ form|crispy }}
</fieldset>
<div class="form-group">
<button class="btn btn-outline-info" type="submit">Request Password Reset</button>
</div>
</form>
</div>
{% endblock content %}
服务器响应:
解决方案
似乎 Django 在网页上运行良好,在发送过程中可能会出现一些错误。
我认为这可能是您的电子邮件设置,请尝试设置
SERVER_EMAIL='my@gmail.com'
django 默认会从 localhost 发送电子邮件,Gmail 不接受
可能重复:Django send_mail 不工作
推荐阅读
- assembly - 引脚操作组件 - 向/从特定引脚写入/读取
- c++ - 如何使用标准 C++11 获取当前线程的本机句柄?
- checkbox - 复选框无法在选项卡中选中/取消选中
- linux - 如何使用#ifdef和#endif注释掉目录和子目录中所有文件中的特定行?
- c - 使用管道在子进程和父进程之间进行通信
- c# - 可访问性不一致:返回类型小于方法
- sql - 改进 SQL 查询以查找冗余数据
- python - 如何确定python正在执行哪个脚本?
- vue.js - 在 Vuex 中设置基于服务器的值的正确方法
- c# - 用于在 .Net 中发送自定义电子邮件的 AWS Cognito Lamda 功能