Django EmailMultiAlternatives带有HTML格式的Embadded图像

2024-06-08 16:44:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图发送电子邮件与HTML和embadded图像。电子邮件发送工作良好,它也附加在电子邮件中的图像,但它不显示图像在HTML(内联)。我用过内容:ID in在模板中查看和cid,但没有成功:(。我探索了这么多的形式和应用解决方案,但徒劳,请帮助!。这是我的代码:

html_content = render_to_string('newsletters/newsletter_template.html', vars)
text_content = strip_tags(html_content) 

to = 'myemail@gmail.com'


msg = EmailMultiAlternatives(self.subject, text_content, settings.STAFF_FROM_EMAIL, [to])
msg.attach_alternative(html_content, "text/html")

image_file = open('../media/images/banner_admin.gif', 'rb')
msg_image = MIMEImage(image_file.read())
image_file.close()

msg_image.add_header('Content-ID', '<image1>')
msg.attach(msg_image)

msg.send()

模板文件:

^{pr2}$

如果我有什么遗漏请告诉我。。。在


Tags: totext图像image模板id内容电子邮件
2条回答

HTML电子邮件中的图像需要有绝对的URL:

<img alt="Django" src="https://www.djangoproject.com/m/img/site/hdr_logo.gif">

若要在电子邮件正文中嵌入PNG文件,请尝试以下代码:

for f in ['img1.png', 'img2.png']:
    fp = open(os.path.join(os.path.dirname(__file__), f), 'rb')
    msg_img = MIMEImage(fp.read())
    fp.close()
    msg_img.add_header('Content-ID', '<{}>'.format(f))
    msg.attach(msg_img)

msg.send()

现在可以在模板中使用<img src="cid:img1.png">。结果应该是电子邮件客户端在<img>标记处显示嵌入邮件中的图像,而不是作为附件显示。在

相关问题 更多 >