Как отправить почту после провоцирования конечной точки API, Django? - PullRequest
0 голосов
/ 03 ноября 2019

Мое приложение использует React для внешнего интерфейса и Django & Django RestFramework. Я пытаюсь отправить электронное письмо. Это невозможно с React Side. Итак, я подумал о том, чтобы создать Model Mail здесь, в django с

class Mail(models.Model):
    MAIL_SENT= (
        ('Y', 'Yes'),
        ('N', 'No'),
    )
    send_to= models.CharField(max_length=120)
    reply_to= models.CharField(max_length=120)
    message= models.TextField()
    subject= models.TextField()
    mail_sent= models.CharField(max_length=1, default="Y", choices=MAIL_SENT)

    def __self__(self):
        return self.send_to

. Я хочу создать конечную точку API для Mail и метода send во время метода post. Может кто-нибудь, пожалуйста, помогите мне с этим?

Ответы [ 2 ]

0 голосов
/ 03 ноября 2019

Вы можете использовать функцию django send_mail

пример:

from django.core.mail import send_mail

send_mail(
    'Subject here',
    'Here is the message.',
    'from@example.com',
    ['to@example.com'],
    fail_silently=False,
)

вы должны использовать mail_port, по умолчанию from_email и password.

ссылка: https://docs.djangoproject.com/en/2.2/topics/email/

======================================

так что вы можете создать свою конечную точку так же, как это

from django.core.mail import send_mail
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status


class MailSender(APIView):

    def post(self, request, format=None):
        to_email = request.data.get("to_email")
        send_mail(
            'Subject here',
            'Here is the message.',
            'from@example.com',
            ['to_email'],
            fail_silently=False,
        )
        return Response({"message": "e-mail has been sent successfully"}, 
                        status=status.HTTP_200_OK)

, вы также можете отправлять почту с помощью threading и затем возвращать ответ.

0 голосов
/ 03 ноября 2019

Django предоставляет функцию send_mail следующим образом:

from django.core.mail import send_mail

send_mail(
    'Subject here',
    'Here is the message.',
    'from@example.com',
    ['to@example.com'],
    fail_silently=False,
)

ссылка на документацию: https://docs.djangoproject.com/en/2.2/topics/email/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...