mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 06:11:07 -05:00
46 lines
1.5 KiB
Python
46 lines
1.5 KiB
Python
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)
|