【问题标题】:Send a mail with django rest framework with an image使用带有图像的 django rest 框架发送邮件
【发布时间】:2021-05-26 20:39:06
【问题描述】:

我正在后端使用 django rest 框架构建一个网站,并在前端做出反应,我必须制作一个表单,填写后发送电子邮件(我熟悉在 django 中填写表单时简单发送电子邮件)但是当用户在前端填写此表单并上传图片时,我不知道如何使这项工作。

这是数据库

models.py

from datetime import datetime

class Refund(models.Model):
    name = models.CharField(max_length=200)
    email = models.CharField(max_length=100)
    subject = models.CharField(max_length=100, default = "Need a Refund")
    message = models.TextField(max_length=500)
    amount = models.CharField(max_length=10)
    image = models.ImageField(upload_to='photos/%Y/%m/%d/', blank = True)
    contact_date = models.DateTimeField(default=datetime.now, blank=True)

    def __str__(self):
        return self.email```

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:
    from django.core.mail import EmailMessage
    from email.mime.image import MIMEImage
    from gettingstarted.settings import EMAIL_HOST_USER
    r = Refund.objects.create(name= request.POST['name'],email=request.POST['email'],subject =request.POST['subject'],message =request.POST['message'],amount =request.POST['amount'],image = request.FILES['image'],contact_date = request.POST['contact_date'])
    msg = EmailMessage('New review image','this is the image','EMAIL_HOST_USER',[r.email],headers={'Message-ID': 'foo'})
    msg.content_subtype = "html"
    if image:
        mime_image = MIMEImage(r.photo.read(),_subtype=str(r.photo.name).split(".")[-1])
        mime_image.add_header('Content-ID', '<image>')
        msg.attach(mime_image)
        print('mime image',mime_image)
    msg.send()
    

    【讨论】:

    • 电子邮件客户端有时不支持 CID 标签。我发现托管图像并获取电子邮件 HTML 的 URL 更为通用。
    猜你喜欢
    • 2022-01-11
    • 2021-05-23
    • 1970-01-01
    • 2010-11-08
    • 2013-11-11
    • 2018-05-19
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多