from rest_framework.views import APIView from rest_framework.response import Response from rest_framework import status from rest_framework.permissions import AllowAny from django.contrib.sites.shortcuts import get_current_site from .services import EmailService class SendEmailView(APIView): permission_classes = [AllowAny] # Allow unauthenticated access def post(self, request): data = request.data to = data.get("to") subject = data.get("subject") text = data.get("text") from_email = data.get("from_email") # Optional if not all([to, subject, text]): return Response({ "error": "Missing required fields", "required_fields": ["to", "subject", "text"] }, status=status.HTTP_400_BAD_REQUEST) try: # Get the current site site = get_current_site(request) # Send email using the site's configuration response = EmailService.send_email( to=to, subject=subject, text=text, from_email=from_email, # Will use site's default if None site=site ) return Response({ "message": "Email sent successfully", "response": response }, status=status.HTTP_200_OK) except Exception as e: return Response({ "error": str(e) }, status=status.HTTP_500_INTERNAL_SERVER_ERROR)