我想安排在某个选定日期发送电子邮件。我怎样才能在 DRF 中做到这一点?

I want to schedule the email send for some choosen date . How can I do that in DRF?

我想以收件人邮箱地址和预定日期为输入,按预定日期发送邮件。我在 views.py 中有以下代码行 实际上我很期待在 django 中使用 apscheduler 包进行 异步后台任务 但是 任何建议和解决方案都是可取的.

class SendMailView(APIView):

    def post(self, request, *args, **kwargs):

    '''
    POST Method for sending Email
    '''     
       send_to = request.data.get('receiver_email') 
       schedule_for = request.data.get('schedule_date')

       email_plaintext_message = " Hello"
       send_mail(
                # title:
                "Test mail,
                # message:
                email_plaintext_message,
                # from:
                 'some@gmail.com,
                # to:
                [send_to]

            )


       return Response({"status":"Email Send"},status=status.HTTP_200_OK)
        

考虑使用 Celery。 您需要做的就是跟随安装,启动一个worker和beat,然后您就可以调度任务了。

task.py

from celery import shared_task

@shared_task
def sendScheduledEmail(email_to):
   #do your stuff

然后在您的 API POST 上安排:

sendScheduledEmail.apply_async([email_to],eta=datetime.datetime(2021, 07, 06, 09, 30))

我没有对此进行测试,所以如果您有任何错误请告诉我