发送带有嵌入式图像的电子邮件Flask-Mail?

时间:2019-03-20 22:57:22

标签: python-3.x email flask

我有一个使用FlaskFlask-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') }} ">

任何引用或想法为什么这些都不起作用?

1 个答案:

答案 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">