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)
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)
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)
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)
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)
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)