发送激活电子邮件-Django

时间:2013-04-24 07:03:21

标签: django email django-models django-views

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

这是我的views.py

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

2 个答案:

答案 0 :(得分: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 :(得分:-1)

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

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

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

以下是发送电子邮件的代码:         来自email.mime.text导入MIMEText         来自email.mime.multipart导入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 希望它有所帮助!