如何使用 Python/Django 在电子邮件中发送内联图像? [复制]

Posted

技术标签:

【中文标题】如何使用 Python/Django 在电子邮件中发送内联图像? [复制]【英文标题】:How can I send Inline images in Email with Python/Django? [duplicate] 【发布时间】:2014-03-18 16:02:12 【问题描述】:

我正在尝试使用 Python/Django 发送带有内联图像的电子邮件。

Here 是显示我如何做的代码。 它仍在开发中。因此,它现在要做的就是发送一封包含大黄蜂图片的虚拟电子邮件。

然而,当我在 Gmail 收件箱中收到电子邮件时,我只看到以下基于文本的电子邮件。电子邮件的各种 Mime 部分以文本形式显示在电子邮件的有效负载中。 我点击了 Gmail 中的“显示原始邮件”按钮,然后剪切并粘贴了下面的整个电子邮件,以便您查看我收到的内容。

有人可以建议我在这里做错了什么吗?以及可能的解决方案?

Delivered-To: myemail@gmail.com
Received: by 10.58.189.196 with SMTP id gk4csp207059vec;
        Mon, 17 Feb 2014 23:10:53 -0800 (PST)
X-Received: by 10.140.22.145 with SMTP id 17mr38512811qgn.0.1392707452834;
        Mon, 17 Feb 2014 23:10:52 -0800 (PST)
Return-Path: <0000014443d53bd9-c1021b39-b43e-4d6f-bb55-0aff6c4b38f5-000000@amazonses.com>
Received: from a8-41.smtp-out.amazonses.com (a8-41.smtp-out.amazonses.com. [54.240.8.41])
        by mx.google.com with ESMTP id j50si9661440qgf.137.2014.02.17.23.10.52
        for <myemail@gmail.com>;
        Mon, 17 Feb 2014 23:10:52 -0800 (PST)
Received-SPF: pass (google.com: domain of 0000014443d53bd9-c1021b39-b43e-4d6f-bb55-0aff6c4b38f5-000000@amazonses.com designates 54.240.8.41 as permitted sender) client-ip=54.240.8.41;
Authentication-Results: mx.google.com;
       spf=pass (google.com: domain of 0000014443d53bd9-c1021b39-b43e-4d6f-bb55-0aff6c4b38f5-000000@amazonses.com designates 54.240.8.41 as permitted sender) smtp.mail=0000014443d53bd9-c1021b39-b43e-4d6f-bb55-0aff6c4b38f5-000000@amazonses.com
Return-Path: 0000014443d53bd9-c1021b39-b43e-4d6f-bb55-0aff6c4b38f5-000000@amazonses.com
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: Hello World3
From: My Django App <donotrespond@mydjangoapp.com>
To: myemail@gmail.com
Date: Tue, 18 Feb 2014 07:10:51 +0000
Message-ID: <0000014443d53bd9-c1021b39-b43e-4d6f-bb55-0aff6c4b38f5-000000@email.amazonses.com>
X-SES-Outgoing: 2014.02.18-54.240.8.41

Content-Type: multipart/related;
 boundary="===============1003274537458441237=="
MIME-Version: 1.0

--===============1003274537458441237==
Content-Type: text/html; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

<p>Hello <img src="cid:myimage" /></p>
--===============1003274537458441237==
Content-Type: image/jpeg
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Id: <myimage>

/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBxQTERUUEhIWFBUVFxcVFRQVGBUUFRcYFxUWFhQU
FRUYHCggGRolHRQVITEiJSkrLi4uFx8zODMsNygtLisBCgoKDg0OGhAQGywmICYzLDc3MCwvLCw1

<VERY LARGE PORTION SNIPPED>

BAgQIECAAIGaAsLKmnPVFQECBAgQIECAAAECBAgQIECAAIF0AsLKdCNTMAECBAgQIECAAAECBAgQ
IECAAIGaAsLKmnPVFQECBAgQIECAAAECBAgQIECAAIF0Av8HNFl0J1BnG68AAAAASUVORK5CYII=
--===============5170682983005376168==--

【问题讨论】:

原帖中没有答案。 5 个人将此标记为“重复”并在其他地方给出了答案。 【参考方案1】:

看起来你有:

multipart/related
-> text/html
-> image/jpeg

过去,我在发送电子邮件时也遇到过问题,顶部是多部分/相关的。试试这个:

multipart/mixed
-> multipart/related
--> text/html
--> image/jpeg

另外,请确保并像这样设置图像的处置:

img.add_header("Content-Disposition", "inline", filename="myimage")

【讨论】:

如你所见,我几乎完全按照这些说明进行操作:***.com/questions/1633109/…你知道为什么这些说明对我不起作用吗? 每个电子邮件程序都有自己独特的电子邮件处理方式。我的回答是我认为最接近标准。

以上是关于如何使用 Python/Django 在电子邮件中发送内联图像? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Python Django 电子邮件表单示例 [关闭]

python Django:使用用户名或电子邮件登录

Python django实现简单的邮件系统发送邮件功能

Python django实现简单的邮件系统发送邮件功能

在 Python Django 中,我想运行这两个语句,如果 else 是如果电子邮件显示它或者如果用户名显示它 [重复]

Python Django Gmail SMTP 设置