Django restframe工作从发布的数据发送电子邮件



我使用的是Django rest框架,我有一个联系我们的表。。在视图中,我使用基于类的视图,我想在用户发布数据时发送电子邮件。。这是我的功能

def post(self, request):  
return self.create(request)
return send_email(request)
def send_email(request):
if request.method == 'POST':
subject = request.POST.get('subject', '')
message = request.POST.get('message', '')
from_email = request.POST.get('email', '')
send_mail(subject, message, from_email, ['haguwanax@l0real.net'], fail_silently=False)
return Response (status=status.HTTP_200_OK)

它保存了数据,但没有发送任何内容。这是我的设置.py

EMAIL_HOST = 'smtp.gmail.com'
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
EMAIL_PORT = 587
EMAIL_HOST_USER = '*****@gmail.com'
EMAIL_HOST_PASSWORD = '*******'
EMAIL_USE_TLS = True

不能在同一代码块中同时使用两个返回。您的第二个返回语句将不会执行。

我认为你的create方法不需要返回什么。它只是存储一些值。如果电子邮件发送成功与否,您的发送电子邮件可能会返回true或false请在您的post函数中只使用一个return语句。

您可以重写以下代码:

def post(self, request):  
self.create(request)
check_mail=send_email(request)
if check_mail:
return Response (status=status.HTTP_200_OK)
def send_email(request):
if request.method == 'POST':
subject = request.POST.get('subject', '')
message = request.POST.get('message', '')
from_email = request.POST.get('email', '')
send_mail(subject, message, from_email, ['haguwanax@l0real.net'], 
fail_silently=False)
return True

send_email函数没有被调用,因为您在return self.create(request)之后调用它。因此无法访问send_email的代码。

请在post函数中仅使用一条return语句。

您可以在没有return语句的情况下调用电子邮件方法,然后调用return self.create(request)

send_email(request) return self.create(request)

相关内容

最新更新