我正在创建一个不活跃的用户,并希望在创建帐户时向他们发送电子邮件以激活帐户,例如django-registration发送帐户。
这是我的views.py
user = User.objects.create_user(userName, userMail,userPass)
user.is_active=False
user.save()
答案 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 希望它有所帮助!