我想通过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....
我看不到内容中的图片。所以我想将此图像作为附件发送。
怎么做?
答案 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')
...