如何添加base64图像数据作为附件?

时间:2017-11-06 11:19:42

标签: django django-email

我想通过EmailMultiAlternatives创建电子邮件,但我有图像数据作为base64 - 来自POST数据。我想通过电子邮件将其作为附件发送。

现在我有(查看):

    ctx = { 'username': request.user.username, 'img': request.POST['image'] }

    subject, from_email, to = 'Hello', 'mailfrom@server', 'mailto@server'
    text_content = 'text only'
    html_content = render_to_string('visemail.html', ctx)
    msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
    msg.attach_alternative(html_content, "text/html")
    msg.send()

模板:

<img src="{{ img }}" />

但是我收到了包含短信的电子邮件:

<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB....

我看不到内容中的图片。所以我想将此图像作为附件发送。

怎么做?

3 个答案:

答案 0 :(得分:0)

好的,我补充说:

DateOfBirth : 17/08/1991 00:00:00
DateOfArrival : 17/08/1992 00:00:00

它适用于我。

答案 1 :(得分:0)

您可以先将base64 img转换为PNG,然后将其作为附件发送。

im_png = Image.open(BytesIO(base64.b64decode(img)))
im_png.save('image.png', 'PNG')

答案 2 :(得分:-1)

对于python 3.6我做到了:

导入base64

...

    img = MIMEImage(base64.b64decode(img_data[img_data.find(",")+1:].encode('ascii')), 'jpeg')

...