首页 > 解决方案 > 如何通过从序列化程序获取 DRF API 的数据来使用 send_mass_mail()

问题描述

我正在尝试制作一个 django rest 框架 Api 来向多个人发送邮件。这是我的模型.py

from django.db import models

# Create your models here.

class EmailRecipients(models.Model):
    recipient_email= models.CharField(max_length=100)

    def __str__(self):
        return self.recipient_email

和 serializers.py 中相同的序列化程序

from rest_framework import serializers

from .models import EmailRecipients

class EmailRecipientsSerializer(serializers.ModelSerializer):
    class Meta:
        model = EmailRecipients
        fields = '__all__'

在我的 apiviews.py 中,我有一个用于显示和发布收件人电子邮件列表的视图,但我想定义一个能够获取此列表并使用 django 中的 send_mass_mail() 方法将其发送到上述所有内容的函数。

from .models import EmailRecipients

from rest_framework import generics
from .serializers import EmailRecipientsSerializer
from django.core.mail import send_mail
from microservice.settings import EMAIL_HOST_USER
from django.http import JsonResponse,HttpResponse


class EmailRecipientList(generics.ListCreateAPIView):
    queryset= EmailRecipients.objects.all()
    serializer_class = EmailRecipientsSerializer

def sendmail(request):
    serializer = EmailRecipientsSerializer(data=request.data)
    email = 'abcd@gmail.com'
    if serializer.is_valid():
        serializer.save()
        email = serializer.data['recipient_email']
    subject = 'Welcome to the microservice'
    message = 'Try more'
    recepient = email
    send_mail(subject,message,EMAIL_HOST_USER,[recepient],fail_silently=False)

    return HttpResponse('sent successfully')

我尝试编写代码以发送给单个收件人,但这也不起作用。我也不确定serializer = EmailRecipientsSerializer(data=request.data)会包含什么。

请帮助,刚刚开始使用 DRF。

标签: djangodjango-rest-framework

解决方案


推荐阅读