zoukankan      html  css  js  c++  java
  • 注册用户并发送邮件

    邮箱配置

    # 在 settings 下配置邮件发送
    # 配置邮件发送
    EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
    EMAIL_HOST = 'smtp.qq.com'  # 如果为163邮箱,设置为smtp.163.com
    EMAIL_PORT = 25  # 或者 465/587是设置了 SSL 加密方式
    # 发送邮件的邮箱
    EMAIL_HOST_USER = '自己邮箱'
    # 在邮箱中设置的客户端授权密码
    EMAIL_HOST_PASSWORD = '邮箱设置-->账户-->开启服务  如图'  # 第三方登陆使用的授权密码
    EMAIL_USE_TLS = True  # 这里必须是 True,否则发送不成功
    # 收件人看到的发件人, 必须是一直且有效的
    EMAIL_FROM = '脑瓜疼<自己邮箱>'
    DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
    
    

    在 views 中导包

    # 如果没有 itsdangerous 包
    pip install itsdangerous
    # 发送邮箱配置
    from django.conf import settings
    # 邮箱注册
    from django.core.mail import send_mail
    # 加密
    from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
    # 过期异常处理
    from itsdangerous import SignatureExpired
    #  配置密钥  失效时间
    serializer=Serializer(settings.SECRET_KEY,180)
    
    

    注册

    class Register(APIView):
        def post(self,request):
            name=request.data.get('username')
            word=request.data.get('password')
            word1=request.data.get('password1')
            email=request.data.get('email')
            if not re.match(r'[0-9a-zA-Z]{0,19}@(.*?).com',email):
                return Response({'msg':'邮箱错误','code':400})
            user=User.objects.filter(username=name).first()
            if user:
                return Response({'msg':'用户已存在','code':400})
            if word==word1:
                data={'username':name,'password':make_password(word),'email':email}
                user_serializer=UserModelSerializer(data=data)
                if user_serializer.is_valid():
                    user_serializer.save()
                    # 数据保存以后,可以进行发邮件
                    user_obj=user_serializer.data
                    # 把用户信息制作成字典 
                    user_info={'user_id':user_obj.get('id')}
                    # 用户信息序列化加密
                    token=serializer.dumps(user_info).decode()
                    # 标题
                    subject='好又多会员注册'
                    # 消息
                    message='欢迎注册好又多商城会员'
                    # 和 settings中的 EMAIL_FROM 匹配
                    from_email=settings.EMAIL_FROM
                    # 那个邮箱接收这个消息
                    recipient_list=[email]
                    html_message='<h3>欢迎注册好又多商城会员,请点击以下链接进行激活:</br><a href="http://127.0.0.1:8000/app01/register/?token={}">激活用户点这里</a></h3>'.format(token)
                    send_mail(subject=subject,
                              message=message,
                              recipient_list=recipient_list,
                              from_email=from_email,
                            html_message=html_message)
                    return Response({'msg':'注册成功','code':200})
                else:
                    return Response({'msg':'注册失败','code':400})
            else:
                return Response({'msg':'两次密码不一致','code':400})
    

    解密

        def get(self,request):
            print(request.GET.get('token'))
            token=request.GET.get('token')
            try:
                #  序列化解密 token值
                user_info=serializer.loads(token)
                print(user_info)
                return Response({'msg': 'OK', 'code': 200, 'token':user_info})
            except SignatureExpired:
                return Response({'msg':'激活失败','code':200})
    
  • 相关阅读:
    FileZilla
    dos2unix转换从win下vimruntime下的文件
    在 MFC SDI 程序中实现多语言程序界面
    AheadLib 2.2.150
    F982,F983班数理逻辑期末考试试题
    论文公式规范。
    Servlet/JSP配置详解
    COM沉思录(八)
    XML配置文件的读取处理
    天使和魔鬼(转载)
  • 原文地址:https://www.cnblogs.com/Beginner-Y/p/13033753.html
Copyright © 2011-2022 走看看