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()
2 回答
您应该查看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并复制所有必要的位 .基本上在用户注册后,您要设置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
你可能还想看看这个:https://github.com/JunyiJ/django-register-activate希望它有所帮助!