2

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

这是我的意见.py

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

2 回答 2

1

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

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

尽管有些过时(即没有基于类的视图),但还有一些其他复杂的细节可以django-registration提供彻底和完善的解决方案,因此我建议您花足够的时间查看来自官方存储库和盗版并复制所有必要的位。

于 2013-04-24T08:54:49.990 回答
0

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

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

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

这是发送电子邮件的代码: from email.mime.text import MIMEText from email.mime.multipart import 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 希望对您有所帮助!

于 2016-05-17T01:00:35.950 回答