2013-04-24 184 views
1

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

这是我的views.py

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

如果你不想使用django注册,你只需要看看它的代码,并重现它实现的机制。你试过什么了? – 2013-04-24 07:22:56

+0

我想发送像Django注册邮件,但我不知道如何发送时,我自己创建用户 – 2013-04-24 07:38:08

回答

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。

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

当用户点击链接时,会触发激活功能。在激活功能中,它首先根据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 希望它帮助!

+0

虽然此链接可能回答这个问题,最好包括答案的重要部分在这里,并提供链接参考。如果链接页面更改,则仅链接答案可能会失效。 - [来自评论](/ review/low-quality-posts/12374252) – Zulu 2016-05-17 01:51:35

+0

感谢您指出。我刚刚更新了答案。 – Junyi 2016-05-17 02:12:55