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})
    
  • 相关阅读:
    Android的selector,背景选择器
    JAVA静态和非静态内部类
    Android应用资源--之属性(Attribute)资源
    contentprovider的学习实例总结
    转:Android 2.3 代码混淆proguard技术介绍
    忘掉旋转,利用2-3-4树,学习红黑树
    ios 定位获取当前位置信息
    地图相关
    mac下,svn配置
    NimBus一个好的开发框架
  • 原文地址:https://www.cnblogs.com/Beginner-Y/p/13033753.html
Copyright © 2011-2022 走看看