使用内嵌图像Flask-Mail发送电子邮件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用内嵌图像Flask-Mail发送电子邮件?相关的知识,希望对你有一定的参考价值。

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

任何参考或想法为什么这些不起作用?

答案

您需要在附件中添加“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">

以上是关于使用内嵌图像Flask-Mail发送电子邮件?的主要内容,如果未能解决你的问题,请参考以下文章

发送带有内嵌图像的电子邮件

Flask-Mail 队列消息被发送到不同的电子邮件

使用flask-mail通过gmail发送电子邮件

在 Windows XP 中使用 Indy 10 发送带有内嵌图像的电子邮件时出现“SMTP 传入数据超时”

用Flask-mail发送电子邮件

Flask-mail 批量发送 HTML 电子邮件,在 html 中使用波斯语字体