gpt4 book ai didi

python - 如何使用 django "Rest Framwork"发送电子邮件?

转载 作者:行者123 更新时间:2023-12-05 08:20:23 26 4
gpt4 key购买 nike

我正在使用小型 Rest api 项目效果非常好。

但不知何故我必须在那里制作发送电子邮件功能。

所以我在 settings.py 中添加了电子邮件配置

//设置.py

# SMTP Mail service with decouple
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = "smtp.gmail.com"
EMAIL_HOST_USER = config('EM_ACCOUNT')
EMAIL_HOST_PASSWORD = config('EM_PASSWORD')
EMAIL_PORT = 587
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

// View .py

from rest_framework import viewsets
from consult.models import Consult
from consult.serializers import ConsultSerializer
from django.core.mail import EmailMessage


class ConsultViewSet(viewsets.ModelViewSet):
queryset = Consult.objects.all()
serializer_class = ConsultSerializer


def send_email(request):
email = EmailMessage(
'Title',
(ConsultSerializer.name, ConsultSerializer.email, ConsultSerializer.phone),
'my-email',
['my-receive-email']
)
email.attach_file(ConsultSerializer.file)
email.send()

//模型.py

from django.db import models


# Create your models here.
class Consult(models.Model):
name = models.CharField(max_length=16)
position = models.CharField(max_length=16, null=True)
group = models.CharField(max_length=50)
email = models.CharField(max_length=50, null=True)
phone = models.CharField(max_length=14)
describe = models.TextField(blank=True, null=True)
file = models.FileField(blank=True, null=True)
create_date = models.DateTimeField(auto_now_add=True)
update_date = models.DateTimeField(auto_now=True)

class Meta:
db_table = 'Consult'

//序列化程序.py

from rest_framework import serializers
from .models import Consult


class ConsultSerializer(serializers.ModelSerializer):
class Meta:
model = Consult
fields = ('id', 'name', 'position', 'group', 'email', 'phone', 'describe', 'file', 'create_date')

是的。这就是我所有的代码。我在 View 中设置了 send_mail 函数。

老实说我想要自动发送邮件功能当查询我的数据库中的数据时。但我只能找到正常的 Django 解释。

能不能帮我设置一个创建数据时自动发送邮件的功能??

最佳答案

实际上,最好使用 Signals而不是覆盖 create() 方法。例如,您可以在 models.py 文件中使用以下代码:

@receiver(post_save, sender=settings.CONSULT_MODEL)
def send_mail_on_create(sender, instance=None, created=False, **kwargs):
if created:
send_email() # call send mail function

它的作用是当您的模型实例创建时它会收到一个信号,并执行您希望它执行的任何操作。您还可以将 post_save 更改为 pre_save 和/或其他可用的默认信号,甚至可以定义您自己的信号并从模型内部发送它 create() 函数。

关于python - 如何使用 django "Rest Framwork"发送电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53404738/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com