Django----邮件发送验证{小}

-----------------------------------------------------------------------------------------------------
# 导入已封装好的函数-- 也成工具文件夹
from utils.sha2203 import *
import hashlib
import random
import re
# 封装sha256
def sha56(raw):
    # 实例化sha256对象
    sha56 = hashlib.sha256()
    # 把要加密的密码,进行update操作并转成utf-8,不写默认是utf-8
    sha56.update(raw.encode('utf-8'))
    # 返回一个sha56的16进制的格式
    return sha56.hexdigest()



# 加盐,随机盐
def random_safe(n=5):
    # 定义一个简单的字符串
    str = '23456789abcdefgjkmnpqrestuvwxyz'
    # 定义一个空值,将每次循环的随机数,拼接到ret上。然后返回。
    ret = ''
    for i in range(n):
        # len出字符串的长度,利用下标进行随机抽出。
        ret += str[random.randint(0,30)]
    return ret


# 正则验证邮箱
def check_email(email):
    ret = re.match(r'(\w+)@(\w+)\.(\w){2,}$',email)
    if ret:
        # 满足条件
        return True
    else:
        # 不满足条件
        return False

# 正则验证密码
def check_passwd(password):
    pattern = re.match("^(?=.*[a-zA-Z].*)(?=.*[\d].*)(?=.*_.*).{6}$",password)
    if pattern:
        return True
    else:
        return False


-----------------------------------------------------------------------------------------------------
 # 实现从前端获取的数据进行序列化操作后,执行发送邮件
    ************************ 公共部分 *****************
    if user_ser.is_valid():
            user_ser.save()
            code = random_safe()   # 发邮件验证码
            self.storge_code(eml,code)   # 把验证码存入redis里
            
            self.send_mailx(code)    # 发邮件
            return Response({'code':200,'message':'注册成功'})
----------------------------------------------------------------------------------------------------
# 1 #
settings.py配置
# 邮件参数设置 

# 邮件---
EMAIL_HOST = 'smtp.163.com'
# 设置端口号,为数字
EMAIL_PORT = 25
#设置发件人邮箱
EMAIL_HOST_USER = '[email protected]'
# 设置发件人 授权码
EMAIL_HOST_PASSWORD = '123456789lgx'
# 设置是否启用安全链接
EMAIL_USER_TLS = True
EMAIL_USER_TLS = False
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

# 2 #
views.py里
# 发邮件,导入send_mail,在Django的底层已封装好。
from django.core.mail import send_mail

# 可以在某个方法调用执行self.send_mailx()即可发送邮件。
 # 利用面向对象写邮件发送
    def send_mailx(self,code):
        # code = random_safe()   # 发邮件验证码
        # 发邮件的参数 1.主题,2.内容,3.发件人,4.收件人
        html = '您的验证码:{}'.format(code)     # 导进来的是实例,所以要加()
        return send_mail(
            '实验楼注册邮箱验证码',
            html,
            '[email protected]',
            ['[email protected]'] 
        )
 
-----------------------------------------------------------------------------------------------------

##### 如何存入redis库{redis是存储在服务器的内存中,它支持的数据类型比较多}
from django.core.cache import cache
 # 将验证码存在redis中 
    # 在storge_code函数的参数中有俩个参数(自己定义的){也可以是多个【从上面----传来的 ---- 】}
    def storge_code(self,eml,code):
        # 怎么给redis设置,set cacha.set()   俩个值key values
        key = 'jihuo_'+eml
        cache.set(key,code)
  
    def get(self,request):
        # cache从redis用get拿出所查数据
        tmp = cache.get('[email protected]')
        print(tmp)
        return HttpResponse(tmp)

猜你喜欢

转载自www.cnblogs.com/xinzaiyuan/p/12383044.html