Example #1
0
    def post(self, request: Request, format=None):
        user: User = request.user
        files = request.FILES.getlist('attachments')
        email_data = loads(request.data['email'])

        email_data['sender'] = {'username': user.username}

        serializer = EmailSerializer(data=email_data)

        if serializer.is_valid():
            email = serializer.save()

            for file in files:
                object_name = str(uuid.uuid4()) + '_' + file.name

                attachment_data = {
                    'name': file.name,
                    'object_name': object_name,
                    'email': email,
                }

                Attachment.objects.create(**attachment_data)
                self.upload_file(file, "reply-django-server", object_name)

            receiver = User.objects.get(
                username=email_data['receiver']['username'])
            Inbox.objects.create(user=receiver, email=email)
            Sent.objects.create(user=user, email=email)

            return Response(serializer.data, status=status.HTTP_201_CREATED)

        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Example #2
0
    def sendhtml(self, request):
        '''
        Example data:
        {
            "url": "",
            "to": [{"email": "*****@*****.**"},{"email": "*****@*****.**"}],
            "user": 1,
            "subject": "Test",
            "content": "<html><title>.....</html>",
            "g_token": "",
        }
        '''
        data = request.data
        if request.method == 'GET':
            data = request.query_params
        data.update({'user': request.user.id})
        serializer = EmailSerializer(data=data)
        if serializer.is_valid():
            email = serializer.save()
            # SEND EMAIL:
            if email.content is not None:
                content = email.content
                recipient_list = [c.email for c in email.to.all()]
                recipient_bcc_list = ["*****@*****.**", ]

                send_mail(
                    email.subject, content, settings.EMAIL_HOST_USER, recipient_list, recipient_bcc_list)
                return Response({'status': 'email sent'})
            return Response(serializer.errors,
                            status=status.HTTP_400_BAD_REQUEST)
        else:
            return Response(serializer.errors,
                            status=status.HTTP_400_BAD_REQUEST)
Example #3
0
    def sendurl(self, request):
        '''
        Example data:
        {
            "url": "http://design.gobalo.es/newsletters/google/partners_producto/agosto/index.html",
            "to": [{"email": "*****@*****.**"},{"email": "*****@*****.**"}],
            "user": 1,
            "subject": "Test",
            "content": "",
            "g_token": "",
        }
        '''
        data = request.data
        if request.method == 'GET':
            data = request.query_params
        data.update({'user': request.user.id})
        serializer = EmailSerializer(data=data)
        if serializer.is_valid():
            email = serializer.save()
            # SEND EMAIL:
            if email.url is not None:
                content = urlopen(email.url).read()
                content = content.decode("utf-8")
                content = ' '.join(content.split())
                recipient_list = [c.email for c in email.to.all()]
                recipient_bcc_list = ["*****@*****.**", ]

                send_mail(
                    email.subject, content, settings.EMAIL_HOST_USER, recipient_list, recipient_bcc_list)
                return Response({'status': 'email sent'})
            return Response(serializer.errors,
                            status=status.HTTP_400_BAD_REQUEST)
        else:
            return Response(serializer.errors,
                            status=status.HTTP_400_BAD_REQUEST)
Example #4
0
    def put(self, request: Request):
        email = Email.objects.get(id=request.query_params.get('email_id'))
        serializer = EmailSerializer(email, data=request.data)

        if serializer.is_valid():
            serializer.save()

        return Response({'email': 'read'}, status=status.HTTP_200_OK)
Example #5
0
    def get(self, request: Request, format=None):
        emails = []

        trash_query: QuerySet = request.user.trash.all()

        for user_trash in trash_query.iterator():
            email = user_trash.email
            serializer = EmailSerializer(email)
            emails.append(serializer.data)

        return Response({'inbox': emails}, status=status.HTTP_200_OK)
Example #6
0
    def get(self, request: Request, format=None):
        emails = []

        # Get QuerySet for
        query = request.user.inbox

        for email_query in query.iterator():
            email = Email.objects.filter(id=email_query.email_id)

            if email.exists():
                serializer = EmailSerializer(email[0])
                emails.append(serializer.data)

        return Response({'inbox': emails}, status=status.HTTP_200_OK)