【问题标题】:Django: Why is console email backend not sending emails?Django:为什么控制台电子邮件后端不发送电子邮件?
【发布时间】:2018-05-01 13:32:01
【问题描述】:

我正在尝试制作一个应用程序来通过电子邮件重置用户密码。我正在使用示例书第 3 章中的 Django,并且还从该站点获得了指导:https://simpleisbetterthancomplex.com/tutorial/2016/09/19/how-to-create-password-reset-view.html

Settings.py 包含以下行:

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

连同所需的电子邮件设置。

我进入password_reset 视图,输入虚拟邮件,单击发送,最终将我带到password_reset_done 视图。下面是控制台输出:

C:\PythonProjects\by-example-bookmarks>python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
May 01, 2018 - 21:13:39
Django version 2.0.4, using settings 'bookmarks.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
[01/May/2018 21:13:51] "GET /account/login/ HTTP/1.1" 200 1090
[01/May/2018 21:13:57] "GET /account/password_reset/ HTTP/1.1" 200 830
[01/May/2018 21:14:04] "POST /account/password_reset/ HTTP/1.1" 302 0
[01/May/2018 21:14:05] "GET /account/password_reset/done/ HTTP/1.1" 200 602

"POST" 输出之后,我希望看到电子邮件转储以响应.console.EmailBackend 设置,但一无所获。

模拟发送邮件失败的原因是什么?

环境:

Windows 7,django 2.0,在 CMD 控制台上,在 pipenv shell 下

编辑 1 在不同的机器上出现同样的问题。

编辑 2 更改为 .smtp 不会改变任何东西,没有错误。

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

编辑 3 我尝试了其他人的工作,比如这个:https://github.com/ruddra/django-reset-password/tree/master

还是没有运气。

编辑 4 又是一个“别人的作品”。仍然没有运气。 https://github.com/wsvincent/django-auth-tutorial

它曾经有效吗?

编辑 5:views.py

from django.http import HttpResponse
from django.shortcuts import render
from django.contrib.auth import authenticate, login
from .forms import LoginForm
from django.contrib.auth.decorators import login_required

def user_login(request):
    if request.method == 'POST':
        form = LoginForm(request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            user = authenticate( username=cd['username'],
                                 password=cd['password'])
            if user is not None:
                if user.is_active:
                    login(request, user)
                    return HttpResponse('Authenticated '\
                                        'successfully')
                else:
                    return HttpResponse('Disabled account')
            else:
                return HttpResponse('Invalid login')
    else:
        form = LoginForm()
    return render(request, 'account/login.html', {'form': form})

@login_required
def dashboard(request):
    return render(request,
                  'account/dashboard.html',
                  {'section': 'dashboard'})

urls.py

from django.conf.urls import url, include
from . import views
import django.contrib.auth.views
# i think the following does not serve any purpose anymore
from django.contrib.auth import views as auth_views

urlpatterns = [
    # previous login view
    # url(r'^login/$', views.user_login, name='login'),

    # login / logout urls
    url(r'^login/$',
        django.contrib.auth.views.login,
        name='login'),
    url(r'^logout/$',
        django.contrib.auth.views.logout,
        name='logout'),
    url(r'^logout-then-login/$',
        django.contrib.auth.views.logout_then_login,
        name='logout_then_login'),
    url(r'^$', views.dashboard, name='dashboard'),
    url(r'^password-change/$',
        django.contrib.auth.views.password_change,
        name='password_change'),
    url(r'^password-change/done/$',
        django.contrib.auth.views.password_change_done,
        name='password_change_done'),

    # restore password urls
    url('^', include('django.contrib.auth.urls')),
] 

编辑 6 我的 github 仓库在这里,以防有人好奇:https://github.com/jeffplata/by-example-account

【问题讨论】:

  • 您可以发布您正在使用的视图吗?
  • @BurhanKhalid,views.py 包含在编辑中。实际上,那里没什么可看的。不过你可能想看看urls.py
  • 你使用的是什么版本的 django?
  • @Burhan, django 2.0
  • 只是好奇 - 您确实添加了一个用户,将其设置为活动,并给它一个电子邮件地址,对吧?看看here 你的urls.py 不匹配。

标签: django django-views


【解决方案1】:

现在可以了。正如@Burhan Khalid 所建议的那样,非常非常确定有一个用户拥有有效的电子邮件。具体来说,我在重置视图中输入的电子邮件位于用户模型/表中。

【讨论】:

  • 谢谢老兄,过去两周我做错了。谢谢你的回答。
猜你喜欢
  • 2017-11-28
  • 1970-01-01
  • 2011-08-21
  • 1970-01-01
  • 2017-08-07
  • 2018-10-19
  • 2019-07-10
  • 2018-01-12
  • 2011-10-18
相关资源
最近更新 更多