21.验证邮箱
2018-01-22 本文已影响0人
hs_a2d1
需要服务器自动给用户邮箱发送验证链接,后台逻辑写在一个新的app里。在apps里新建一个文件夹叫utils,里面要有init.py。在里面新建一个email_send.py。给注册用户发一个链接,里面包含独一无二的字符串,后台生成这个字符串后保存到数据库再发给用户包含这段字符串的链接,用户点击访问该链接后,服务器提取该段字符串并与数据库存储的字符串比对,如果一致则验证成功,否则报错。先实现生成随机字符串的功能random_str,然后再发邮件send_register_email。主要利用django自带的send_mail()函数,按顺序需要传入标题、内容、发件人、和给谁发。给谁发这里必须是list,send_mail会给所有在list里的邮箱发邮件。
from random import Random
from django.core.mail import send_mail
from users.models import EmailVerifyRecord
from MxOnline.settings import EMAIL_FROM
def random_str(randomlength=8):
str = ''
chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789'
length = len(chars) - 1
random = Random()
for i in range(randomlength):
str += chars[random.randint(0, length)]
return str
def send_register_email(email, send_type="register"):
email_record = EmailVerifyRecord()
code = random_str(16)
email_record.code = code
email_record.email = email
email_record.send_type = send_type
email_record.save()
email_title = ""
email_body = ""
if send_type == "register":
email_title = "慕学在线网注册激活链接"
email_body = "请点击下面链接激活你的账号:http://127.0.0.1:8000/active/{0}".format(code)
send_status = send_mail(email_title,email_body,EMAIL_FROM,[email])
if send_status:
pass
email_body = "请点击下面链接激活你的账号:http://127.0.0.1:8000/active/{0}".format(code)
这里利用了format,属于python基础。
还需要改settings.py,加入发送邮件的相关信息:
EMAIL_HOST = "smtp.sina.com"
EMAIL_PORT = 25
EMAIL_HOST_USER = "kritikder@sina.com"
EMAIL_HOST_PASSWORD = "" #这里写邮箱密码
EMAIL_USE_TLS = False
EMAIL_FROM = "kritikder@sina.com"