Django Rest Auth 邮箱验证

6
有人能解释一下如何在django rest auth中设置电子邮件验证吗? 我的settings.py包含以下内容:
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True   
ACCOUNT_USERNAME_REQUIRED = False

我已经在我的urls.py文件中添加了这行代码:

url(r'^accounts/', include('allauth.urls')),

当我使用这个端点进行注册:rest-auth/registration/时,虽然用户被创建了,但邮件未发送。 如何配置才能发送电子邮件确认?需要拥有SMTP服务器吗? 编辑:(在@McAbra评论之后)
显然,此设置无法发送电子邮件:
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

它只在Django控制台输出中打印邮件。@McAbra提供的设置很有效。但是,在生产环境中,使用Gmail发送验证电子邮件是否可行?我只需要创建这样的电子邮件 noreply.myapp@gmail.com 吗? 编辑2: 我的另一个问题是发送的邮件是空的。模板在site-packages \ allauth \ templates \ account \ email中。电子邮件标题为[http://localhost:8000/],但没有内容。Python控制台中没有错误。有什么想法吗?
解决办法如下:
必须将site-packages \ allauth \ templates \ account \ email文件复制到your-app\templates\account\email中。

只是为了确认一下:你不是期望收到真正的电子邮件,对吧?如果你正在使用指定的 EMAIL_BACKEND,那么你会在控制台中打印出一个“电子邮件”。 - McAbra
好的,所以你在控制台中打印了一封电子邮件,但你想要将实际的电子邮件发送到真正的邮箱中? - McAbra
是的,就是这样。但我刚刚检查过,我的控制台上没有任何输出。我会更新我的帖子。 - Ben
哦...我认为它是Django allauth而不是"rest auth"。 - McAbra
那个解决方案不适用 - 模板很可能无法从其原始目录访问,因为您没有在INSTALLED_APPS中包含allauth - McAbra
显示剩余2条评论
2个回答

3

如果您想发送真正的电子邮件,您需要拥有SMTP服务器。我喜欢使用Gmail SMTP服务器。settings.py应该是:

EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'gmail_username'
EMAIL_HOST_PASSWORD = 'password from https://security.google.com/settings/security/apppasswords'

从那里尝试。如果那样不起作用,我会尽力提供更多帮助。


你的解决方案有效,但我不得不将EMAIL_HOST_PASSWORD更改为仅使用gmail帐户密码。此URL:https://security.google.com/settings/security/apppasswords返回“您要查找的设置对于您的帐户不可用。” - Ben
我已经编辑了我的帖子,并提出了一个简短的问题,也许你也可以在这个问题上帮助我? :) - Ben
有没有什么原因,它只在本地主机上运行,而不在我的服务器上(使用相同的设置)? - Ben

3

我遇到了发送电子邮件的问题,之后又遇到了电子邮件中的链接问题。你需要明确设置帐户确认电子邮件视图。

以下是我的settings.py文件中的设置:

 ACCOUNT_AUTHENTICATION_METHOD = 'email'
 ACCOUNT_EMAIL_REQUIRED = True   
 ACCOUNT_USERNAME_REQUIRED = False
 ACCOUNT_EMAIL_VERIFICATION = 'mandatory'

在urls.py中

  from allauth.account.views import confirm_email as allauthemailconfirmation

  urlpatterns  = [
  url(r'^api/rest-auth/account-confirm-email/(?P<key>[-:\w]+)/$',allauthemailconfirmation,
    name='account_confirm_email'),
  ]

如果您想在本地检查电子邮件,可以使用 mailcatcher.me


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接