Ejemplo n.º 1
0
    def get(self,request):
        # 1.接收数据
        data = json.loads(request.body.decode())
        email = data.get('email')
        # 2.验证数据
        if not re.match(r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}',email):
            return http.JsonResponse({'code':RETCODE.PARAMERR,'errmsg':'参数错误'})
        # 3.保存数据(更新指定用户的邮箱信息)
        try:
            request.user.email = email
            request.user.save()
        except Exception as e:
            return http.JsonResponse({'code':RETCODE.DBERR,'errmsg':'数据保存失败'})


        from apps.users.utils import active_email_url
        verify_url = active_email_url(email,request.user.id)


        from celery_tasks.email.tasks import send_active_email
        send_active_email.delay(email,verify_url)

        #     4.1 激活邮件的内容


        #     4.2 能够发送激活邮件
        #
        # 5.返回响应
        return http.JsonResponse({'code':RETCODE.Ok,'errmsg':'ok'})
Ejemplo n.º 2
0
    def put(self,request):
        body = request.body
        body_str = body.decode()
        data = json.loads(body_str)

        email = data.get('email')

        if not re.match(r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$', email):
            return JsonResponse({'code': RETCODE.PARAMERR, 'errmsg': '邮箱不符合规则'})
        request.user.email = email
        request.user.save()
        # from django.core.mail import send_mail
        # subject = '美多商场激活邮件'
        #
        # message = ''
        #
        # from_email = '欢乐玩家<*****@*****.**>'
        #
        # recipient_list = [email]
        #
        # html_mesage = "<a href='http://www.meiduo.site:8000/emailsactive/?id=%s&email=%s'>戳我有惊喜</a>" % (
        # request.user.id, email)
        #
        # send_mail(subject=subject,
        #           message=message,
        #           from_email=from_email,
        #           recipient_list=recipient_list,
        #           html_message=html_mesage)
        from celery_tasks.email.tasks import send_active_email
        send_active_email.delay(request.user.id,email)

        return JsonResponse({'code': RETCODE.OK, 'errmsg': 'ok'})
Ejemplo n.º 3
0
    def put(self, request):
        body = request.body.decode()
        data = json.loads(body)

        email = data.get('email')
        if not re.match(r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$', email):
            return JsonResponse({'code': 5006, 'errmsg': '邮箱不符合规则'})
        request.user.email = email
        request.user.save()

        from django.core.mail import send_mail
        #
        # def send_mail(subject, message, from_email, recipient_list,
        #               fail_silently=False, auth_user=None, auth_password=None,
        #               connection=None, html_message=None):
        # subject, message, from_email, recipient_list,
        # subject        主题
        # subject = '美多商场激活邮件'
        # # message,       内容
        # message = ''
        # # from_email,  谁发的
        # from_email = '欢乐玩家<*****@*****.**>'
        # # recipient_list,  收件人列表
        # recipient_list = ['*****@*****.**']
        #
        # html_mesage = "<a href='http://www.meiduo.site:8000/emailsactive/?token_id=1'>戳我有惊喜</a>"
        #
        # send_mail(subject=subject,
        #           message=message,
        #           from_email=from_email,
        #           recipient_list=recipient_list,
        #           html_message=html_mesage)
        send_active_email.delay(request.user.id, email)
        # ⑤ 返回相应
        return JsonResponse({'code': 0, 'errmsg': 'ok'})
Ejemplo n.º 4
0
    def put(self, request):
        # !!!必须是登陆用户才可以访问!!!
        # ① 接收  axios
        body = request.body
        body_str = body.decode()
        data = json.loads(body_str)
        # ② 验证
        email = data.get('email')
        if not re.match(r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$',
                        email):
            return JsonResponse({
                'code': RETCODE.PARAMERR,
                'errmsg': '邮箱不符合规则'
            })
        # ③ 更新数据
        request.user.email = email
        request.user.save()
        # ④ 给邮箱发送激活连接
        from django.core.mail import send_mail

        # #subject, message, from_email, recipient_list,
        # #subject        主题
        # subject='美多商场激活邮件'
        # #message,       内容
        # message=''
        # #from_email,  谁发的
        # from_email = '欢乐玩家<*****@*****.**>'
        # #recipient_list,  收件人列表
        # recipient_list = ['*****@*****.**']
        #
        # """
        # 1.思考了一下,我们给用户发送邮件的目的是什么
        #     目的:用户点击这个连接,让他跳转到指定页面,同时修改这个用户的邮件状态
        # 2. 步骤:
        #     ① 有指定的页面
        #     ② 获取用户
        # 3.分析 如何获取用户信息
        #     分析: 用户点击哪个连接就是在发送GET请求.我们就应该在GET请求中,传递用户信息
        #     emailsactive/?user_id=1
        # 4. 用户的信息太明显了,我们需要对用户信息 加密
        # 5. 加密抽取
        # """
        #
        # # 对用户信息进行加密
        # active_url=generic_active_email_url(request.user.id,email)
        # # 用户点击这个连接,让他跳转到指定页面,同时修改这个用户的邮件状态
        # html_mesage="<a href='%s'>戳我有惊喜,恭喜你,注册成功,请点击激活</a>"%active_url
        #
        # send_mail(subject=subject,
        #           message=message,
        #           from_email=from_email,
        #           recipient_list=recipient_list,
        #           html_message=html_mesage)

        from celery_tasks.email.tasks import send_active_email
        send_active_email.delay(request.user.id, email)

        # ⑤ 返回相应
        return JsonResponse({'code': RETCODE.OK, 'errmsg': 'ok'})
Ejemplo n.º 5
0
    def get(self, request):

        # 1.接收邮箱数据
        data = json.loads(request.body.decode())
        email = data.get('email')

        # 2.验证邮箱数据
        if not re.match(r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$',
                        email):
            return http.JsonResponse({
                'code': RETCODE.DBERR,
                'errmsg': '数据保存失败'
            })

        # 3.保存数据(更新指定用户的邮箱信息)
        try:
            request.user.email = email
            request.user.save()
        except Exception as e:
            return http.JsonResponse({
                'code': RETCODE.DBERR,
                'errmsg': '数据保存失败'
            })

        # 4.未使用celery,直接发送邮件
        """
        # 4.发送激活邮件
        from django.core.mail import send_mail

        # 编辑激活邮件的内容
        # subject 主题
        # message 发送的内容
        # from_email 发件人
        # recipient_list  收件人邮箱列表

        subject = '主题'
        message = '内容'
        from_email = settings.EMAIL_FROM
        recipient_list = [email]
        html_message = '<h1>你好,王佳星!</h1><br><h2>欢迎来到美多商城!</h2><br>'

        # 能够发送邮件给用户的邮箱
        send_mail(
            subject = subject,
            message=message,
            from_email=from_email,
            recipient_list=recipient_list,
            html_message=html_message
        )
        """

        # 4.使用celery任务队列异步发动邮件
        # todo 切记不能忘了delay,不然不是异步发送!!!!!!
        verify_url = active_eamil_url(email, request.user.id)
        send_active_email.delay(email, verify_url)

        # 5.返回响应
        return http.JsonResponse({'code': RETCODE.OK, 'errmsg': 'OK'})
Ejemplo n.º 6
0
    def put(self,request):
        data = json.loads(request.body.decode())
        email = data.get('email')
        if not re.match(r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$', email):
            return JsonResponse({'code': 5006, 'errmsg': '邮箱不符合规则'})
        request.user.email = email
        request.user.save()

        send_active_email.delay(request.user.id,email)
        return JsonResponse({'code': 0, 'errmsg': 'ok'})
    def update(self, instance, validated_data):
        email = validated_data['email']

        instance.email = email
        instance.save()

        url = instance.generate_verify_email_url()

        send_active_email.delay(email, url)

        return instance
Ejemplo n.º 8
0
    def put(self, request):
        body = request.body.decode()
        data = json.loads(body)
        email = data.get('email')
        if not re.match(r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$',
                        email):
            return JsonResponse({"code": RETCODE.PARAMERR, "errmsg": "邮箱格式不对"})
        request.user.email = email
        request.user.save()

        send_active_email.delay(request.user.id, email)

        return JsonResponse({"code": RETCODE.OK, "errmsg": "ok"})
Ejemplo n.º 9
0
    def update(self, instance, validated_data):
        # instance = user
        #接收邮件信息
        email = validated_data.get('email')
        instance.email=email
        instance.save()

        #在这里发送邮件

        # from django.core.mail import send_mail
        # # send_mail(subject, message, from_email, recipient_list,)
        # # subject,          主题
        # subject = '美多商场激活邮件'
        # # message,          内容
        # message = ''
        # # from_email,       谁发送的
        # # 谁发送的
        # from_email = '*****@*****.**'
        # # recipient_list    收件人列表
        # recipient_list=[email]
        #
        # #生成一个激活的url
        # verify_url = generate_verify_url(instance.id,email)
        #
        # # from mall import settings
        # # from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
        # #
        # # s = Serializer(secret_key=settings.SECRET_KEY,expires_in=3600)
        # #
        # # token = s.dumps({'id':instance.id,'email':email})
        # #
        # #
        # # verify_url = 'http://www.meiduo.site:8080/success_verify_email.html?token=%s'%token.decode()
        #
        #
        # html_message = '<p>尊敬的用户您好!</p>' \
        #                '<p>感谢您使用美多商城。</p>' \
        #                '<p>您的邮箱为:%s 。请点击此链接激活您的邮箱:</p>' \
        #                '<p><a href="%s">%s<a></p>' % (email, verify_url, verify_url)
        #
        # send_mail(subject,message,from_email,recipient_list,
        #           html_message=html_message)



        from celery_tasks.email.tasks import send_active_email

        send_active_email.delay(email,instance.id)

        return instance
Ejemplo n.º 10
0
    def update(self, instance, validated_data):
        # 更新邮箱信息
        email = validated_data['email']
        instance.email = email
        instance.save()

        # 生成激活url
        email_active_url = instance.general_email_verify_url()

        # 发送邮件
        send_active_email.delay(email, email_active_url)

        # 返回数据
        return instance
Ejemplo n.º 11
0
    def put(self, request):
        # 1.接收  axios
        body = request.body
        body_str = body.decode()
        # 导入系统json,最后一个json
        data = json.loads(body_str)

        # 2.验证
        email = data.get('email')
        if not email:
            return HttpResponseBadRequest('缺少email参数')
        if not re.match(r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$',
                        email):
            return JsonResponse({
                'code': RETCODE.PARAMERR,
                'errmsg': '邮箱不符合规则'
            })
        # 3.更新数据
        request.user.email = email
        request.user.save()
        # 4.给邮箱发送激活链接
        # 导入服务器
        # from django.core.mail import send_mail
        # subject, message, from_email, recipient_list,
        # subject        主题
        # subject = 'Forever激活邮件'
        # # message,       内容
        # message = ''
        # # from_email,  谁发的
        # from_email = '小姐姐<*****@*****.**>'
        # # recipient_list,  收件人列表
        # recipient_list = ['*****@*****.**']
        # # 用户点击链接,,跳转到激成功页面,同时修改用户邮件状态
        #
        # # 对用户加密
        # active_url=generic_active_email_url(request.user.id,request.user.email)
        # # html_mesage = "<a href='http://www.meiduo.site:8000/emailactive/'>戳我有惊喜</a>"
        # html_mesage = "<a href='%s'>戳我有惊喜</a>"%active_url
        #
        # send_mail(subject=subject, message=message, from_email=from_email, recipient_list=recipient_list, html_message=html_mesage)

        # 任务名.delay 添加到中间人
        from celery_tasks.email.tasks import send_active_email
        send_active_email.delay(request.user.id, email)

        # 5.返回响应
        return JsonResponse({'code': RETCODE.OK, 'errmsg': 'ok'})
Ejemplo n.º 12
0
    def update(self, instance, validated_data):
        """
        更新保存用户的邮箱地址
        :param instance: 视图执行完返回的user用户模型对象会传递到instance中
        :param validated_data: 前端传递来,校验完成后的参数
        :return: 返回用户对象
        """
        email = validated_data["email"]
        instance.email = email
        instance.save()

        # 生成激活的url链接
        url = instance.generate_verify_email_url()
        # 使用celery异步队列发送邮件
        send_active_email.delay(email, url)

        return instance
Ejemplo n.º 13
0
    def update(self, instance, validated_data):

        # instance 视图中传来的user对象
        # validated_data  上面验证ok的数据
        email = validated_data.get('email')
        # 保存邮箱到数据库

        instance.email = email
        instance.save()

        # 生成邮件激活链接地址
        verify_url = instance.generate_verify_email_url()

        # 异步发送邮件
        send_active_email.delay(email, verify_url)

        return instance
Ejemplo n.º 14
0
    def put(self, request):
        # 2. 接收参数
        data = request.data

        # 3. 验证数据
        user = request.user
        serializer = UserEmailSerializer(instance=user, data=data)
        serializer.is_valid(raise_exception=True)

        # 4. 更新数据
        serializer.save()

        from celery_tasks.email.tasks import send_active_email
        send_active_email.delay(data.get('email'), request.user.id)

        # 5. 发送激活邮件
        # from django.core.mail import send_mail
        #
        # subject = '美多商城激活邮件' #主题
        #
        # message = '内容' #内容
        #
        # from_email = settings.EMAIL_FROM #发件人
        #
        # email = data.get('email')
        # recipient_list = [email]  #接收人列表
        #
        # #可以设置一些html的样式等信息
        # verify_url = generic_active_url(user.id,email)
        #
        # html_message = '<p>尊敬的用户您好!</p>' \
        #            '<p>感谢您使用美多商城。</p>' \
        #            '<p>您的邮箱为:%s 。请点击此链接激活您的邮箱:</p>' \
        #            '<p><a href="%s">%s<a></p>' % (email, verify_url, verify_url)
        #
        # send_mail(
        #     subject=subject,
        #     message=message,
        #     from_email=from_email,
        #     recipient_list=recipient_list,
        #     html_message=html_message
        # )

        # 6. 返回响应
        return Response(serializer.data)
Ejemplo n.º 15
0
    def update(self, instance, validated_data):
        """

        :param instance: 视图传送过来的user对象
        :param validated_data:
        :return:
        """
        email = validated_data['email']
        instance.email = email
        instance.save()

        # 生成激活链接
        url = instance.generate_verify_email_url()

        # 发送激活邮件
        send_active_email.delay(email, url)

        return instance
Ejemplo n.º 16
0
    def update(self, instance, validated_data):
        """
        更新邮箱
        :param instance: 当前视图get_object时传递的request.user对象
        :return: 最后将instance对象返回
        """
        # 从验证后的数据中获取参数
        email = validated_data["email"]
        # 重点:在生成邮箱验证url之前将email保存进数据库中:因为生成url需要从对象中获取url
        instance.email = email
        instance.save()

        # 生成当前用户专有的验证链接:使用isdangerous根据user对象生成token
        # 每个用户都有可能验证邮箱,直接在模型类中定义generate_verify_email_url方法
        url = instance.generate_verify_email_url()

        # 发送激活验证邮件
        send_active_email.delay(email, url)
        return instance
Ejemplo n.º 17
0
    def update(self, instance, validated_data):
        '''

        :param instance: 视图传过来的 user 用户
        :param validated_data: 校验完后的数据
        :return:
        '''
        email = validated_data['email']

        # 生成激活链接
        url = instance.generate_verify_email_url()

        # 保存数据
        instance.email = email
        instance.save()

        # 发送邮件
        send_active_email.delay(email, url)

        return instance
Ejemplo n.º 18
0
    def put(self, request):
        # !!!必须是登陆用户才可以访问!!!
        # ① 接收  axios
        body = request.body
        body_str = body.decode()
        data = json.loads(body_str)
        # ② 验证
        email = data.get('email')
        if not re.match(r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$',
                        email):
            return JsonResponse({
                'code': RETCODE.PARAMERR,
                'errmsg': '邮箱不符合规则'
            })
        # ③ 更新数据
        request.user.email = email
        request.user.save()
        # ④ 给邮箱发送激活连接
        # from django.core.mail import send_mail
        #
        # #subject, message, from_email, recipient_list,
        # #subject        主题
        # subject='美多商场激活邮件'
        # #message,       内容
        # message=''
        # #from_email,  谁发的
        # from_email = '欢乐玩家<*****@*****.**>'
        # #recipient_list,  收件人列表
        # recipient_list = ['*****@*****.**']
        #
        # html_mesage="<a href='http://www.huyouni.com'>戳我有惊喜</a>"
        #
        # send_mail(subject=subject,
        #           message=message,
        #           from_email=from_email,
        #           recipient_list=recipient_list,
        #           html_message=html_mesage)

        send_active_email.delay(request.user.id, email)
        # ⑤ 返回相应
        return JsonResponse({'code': RETCODE.OK, 'errmsg': 'ok'})
Ejemplo n.º 19
0
    def put(self, request):

        data = json.loads(request.body.decode())
        email = data.get('email')
        if not re.match(r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$',
                        email):
            return JsonResponse({{
                'code': RETCODE.PARAMERR,
                'errmsg': '邮箱不符合规则'
            }})
        request.user.email = email
        request.user.save()
        # from django.core.mail import send_mail
        #
        # #subject, message, from_email, recipient_list,
        # #subject        主题
        # subject='美多商场激活邮件'
        # #message,       内容
        # message=''
        # #from_email,  谁发的
        # from_email = '欢乐玩家<*****@*****.**>'
        # #recipient_list,  收件人列表
        # recipient_list = ['*****@*****.**']
        #
        # html_mesage="<a href='http://www.huyouni.com'>戳我有惊喜</a>"
        #
        # send_mail(subject=subject,
        #           message=message,
        #           from_email=from_email,
        #           recipient_list=recipient_list,
        #           html_message=html_mesage)
        from celery_tasks.email.tasks import send_active_email
        send_active_email.delay(request.user.id, email)
        print(email)

        # ⑤ 返回相应
        return JsonResponse({'code': RETCODE.OK, 'errmsg': 'ok'})