我有一个使用Flask
和Flask-Mail
的应用程序。我正在尝试发送使用html文件作为带有嵌入式图像的模板的电子邮件。一切正常,但我看不到图像。我的代码是:
msg = Message(subject, sender=sender, recipients=recipients)
msg.body = text_body
msg.html = html_body
msg.attachments = [
Attachment(
'header.gif',
'image/gif',
open(join(mail_blueprint.static_folder, 'header.gif'), 'rb').read(),
'inline'
)
]
mail.send(msg)
对于html文件,我尝试了几种引用方式,例如:
<img src="cid:footer.gif">
和
<img src="{{ url_for('mail.static', filename='header.gif') }} ">
任何引用或想法为什么这些都不起作用?
答案 0 :(得分:0)
您需要在附件中添加一个“ Content-ID”标头值。
msg = Message(subject, sender=sender, recipients=recipients)
msg.body = text_body
msg.html = html_body
msg.attach('header.gif','image/gif',open(join(mail_blueprint.static_folder, 'header.gif'), 'rb').read(), 'inline', headers=[['Content-ID','<Myimage>'],])
mail.send(msg)
然后,您将在模板中通过Content-ID引用附件。
<img src="cid:Myimage">