当前位置: 首页 > 面试题库 >

Django AllAuth-如何手动发送重置密码电子邮件?

尤研
2023-03-14
问题内容

在我的应用程序中,我使用的是Django
Allauth。我没有任何用户注册表格。管理员将通过上传包含用户信息的Excel文件来注册用户。我已完成所有这些操作,并且通过自动生成密码将用户保存在用户表中。上传用户列表并将其保存在数据库中之后,我想向每个用户发送重置密码电子邮件。

在allauth重置密码中,您首先需要进入重置页面account/password/reset/并输入您的电子邮件。然后会发送一封电子邮件,指示您更改密码account/password/reset/key/(?P<uidb36>[0-9A-Za-z]+)-(?P<key>.+)/

是否可以直接在应用程序内发送电子邮件?该URL包含一个我不知道如何生成的密钥!还是有更好的方法做到这一点?


问题答案:

这是可能的。我的解决方案实现了一个用户模型post_save信号来调用Allauth密码重置视图,该视图将向用户发送电子邮件。要考虑的第一件事就是让用户的电子邮件地址的管理员用户创建形式强制性的(如解释在这里)。然后使用以下代码:

from allauth.account.views import PasswordResetView

from django.conf import settings
from django.dispatch import receiver
from django.http import HttpRequest
from django.middleware.csrf import get_token


@receiver(models.signals.post_save, sender=settings.AUTH_USER_MODEL)
def send_reset_password_email(sender, instance, created, **kwargs):

    if created:

        # First create a post request to pass to the view
        request = HttpRequest()
        request.method = 'POST'

        # add the absolute url to be be included in email
        if settings.DEBUG:
            request.META['HTTP_HOST'] = '127.0.0.1:8000'
        else:
            request.META['HTTP_HOST'] = 'www.mysite.com'

        # pass the post form data
        request.POST = {
            'email': instance.email,
            'csrfmiddlewaretoken': get_token(HttpRequest())
        }
        PasswordResetView.as_view()(request)  # email will be sent!


 类似资料:
  • 问题内容: MyDjango应用程序当前已设置为使用本机注册包来处理用户身份验证和管理。 我创建了一些文件,用于发送密码重置令牌. 它工作正常。除了密码重设电子邮件外,它是一个丑陋的纯文字怪物。我想使其与My应用程序发送的所有其他电子邮件的外观和风格相匹配。IE:我希望它是HTML,并包含图像,样式和链接。我怎么做? 我按照这里的详细说明进行操作。但是,该代码中有一个错误,我不知道该如何处理: 有

  • 我看过这篇文章了https://ahrjarrett.com/posts/2019-02-08-resetting-user-passwords-with-node-and-jwt了解如何在express中重置密码。 这给了我一个意外标记{的错误 从".../utils/mailer"导入{transaver, getPasswordResetURL, resetPasswordTemboard}

  • 问题内容: 我知道有一些与此类似的问题,但我无法使其正常运行。 好的,我在一个名为$ emailList的变量中有一个从数据库中获取的电子邮件列表。如果将变量放在该部分中,则可以获取代码以从表单发送电子邮件,但无法使其与bcc一起使用。我什至还添加了一封电子邮件,以防万一,但这没什么关系。 这是我的代码。 我试过两个代码: 和 不是因为这些电子邮件而没有分开电子邮件。我知道他们是因为如果我在本节中

  • 我是拉拉维尔的初学者。目前我正在学习这个框架。我现在的Laravel版本是5.3。 我正在使用

  • 问题内容: 我正在寻找有关如何配置jenkins电子邮件插件(ext-mail)以加密通知的说明?Google叔叔对我没有太多帮助。 问题答案: 此类功能不是开箱即用的,您需要根据需要自定义ExtendedEmailPublisher。 您可以获取用于签名/加密的收件人和电子邮件,并最终致电Transport.send(msg)。

  • 可能重复: 如何从我的Android应用程序发送电子邮件? 我正在创建一个main。xml 如何在android中发送电子邮件。但必须是固定id(例如:myid@example.com) 我有main。xml