首页 文章

发送激活电子邮件-Django

提问于
浏览
1

我正在创建一个不活跃的用户,并希望向我们发送电子邮件以激活帐户,例如在我们创建帐户时发送的django-registration .

这是我的views.py

user = User.objects.create_user(userName, userMail,userPass)
 user.is_active=False
 user.save()

2 回答

  • -1

    您应该查看sending emails上的主题指南 . 基本上,您只需使用 django.core.mail 中的组件在创建用户实例后发送包含所有必要信息的激活电子邮件 .

    重要的是,该电子邮件包含有关用户应如何激活其帐户的更多信息 . django-registration 的方式是它有一个与 User 实例关联的单独模型,它指定了一个唯一的标识符,该标识符将在激活视图中用于标识应激活哪个用户帐户,即创建一个 GET 请求将激活 http://foo/accounts/activate/550e8400-e29b-41d4-a716-446655440000 具有关联UUID的用户帐户 .

    还有一些其他复杂的细节使 django-registration 成为一个彻底和完善的解决方案,尽管有点过时(即没有基于类的视图),所以我第二次@NCao建议你花足够的时间来审查来自official repository和ripoff并复制所有必要的位 .

  • 1

    基本上在用户注册后,您要设置user.is_active = False .

    然后,将包含用户信息的URL(例如,id)发送到用户的电子邮件 .

    当用户单击该链接时,它将触发激活功能 . 在激活功能中,它首先根据URL(id)提取用户的信息 . 然后,您可以通过调用user.objects.get(id = id)来查询用户对象 . 之后,您可以设置user.is_active = True并保存用户 .

    以下是发送电子邮件的代码:来自email.mime.text从email.mime.multipart导入MIMEText导入MIMEMultipart

    fromaddr='your email address' #(Gmail here)
        username='your user name'
        password='your password'
        def send_email(toaddr,id):
            text = "Hi!\nHow are you?\nHere is the link to activate your
            account:\nhttp://127.0.0.1:8000/register_activate/activation/?id=%s" %(id)
            part1 = MIMEText(text, 'plain')
            msg = MIMEMultipart('alternative')
            msg.attach(part1)
            subject="Activate your account "
            msg="""\From: %s\nTo: %s\nSubject: %s\n\n%s""" % (fromaddr,toaddr,subject,msg.as_string())
            #Use gmail's smtp server to send email. However, you need to turn on the setting "lesssecureapps" following this link:
            #https://www.google.com/settings/security/lesssecureapps
            server = smtplib.SMTP('smtp.gmail.com:587')
            server.ehlo()
            server.starttls()
            server.login(username,password)
            server.sendmail(fromaddr,[toaddr],msg)
            server.quit()
    

    你可能还想看看这个:https://github.com/JunyiJ/django-register-activate希望它有所帮助!

相关问题