如何创建包含与大多数邮件客户端兼容的嵌入式图像的电子邮件

时间:2010-10-25 20:46:09

标签: mime attachment embedded-resource

我们已经创建了一个允许在外发电子邮件中嵌入图像的系统。

这是我们系统创建的原始消息。此示例包含图像附件和嵌入图像。

Mime-Version: 1.0
From: ...
To: ...
CC: 
Subject: test
x-sender: ...
x-mailer: ...
Content-Type: multipart/mixed; boundary="-------------...A128803765634794"

---------------...A128803765634794
Content-Type: multipart/related; boundary="-------------...B128803765634796"

---------------...B128803765634796
Content-Type: text/html; charset="UTF-8"

<p style="margin: 0; padding: 0"><img src="cid:083.gif" alt="" /></p>

---------------...B128803765634796
Content-type: image/gif; name="083.gif"
Content-ID: <083.gif>
X-Attachment-Id: 083.gif
Content-Disposition: Embedded; filename="083.gif"
Content-transfer-encoding: base64

............................................................................
............................................................................
......................................................
---------------PineappleCodeB128803765634796--
---------------PineappleCodeA128803765634794
Content-type: image/gif; name="waiting.gif"
Content-Disposition: Attachment; filename="waiting.gif"
Content-transfer-encoding: base64

............................................................................
............................................................................
......................................................
---------------PineappleCodeA128803765634794--

我应该添加另一个标题还是应该遵循的规则?

我注意到了一件事 ......我猜这是我的问题和部分Gmails的一部分。但无论如何我想让它停止发生

当电子邮件收到Gmail时,我会

  

不显示图像   显示以下图像 - 始终显示来自...的图像

然后,嵌入的图像显示为图像附件(就像我的其他图像附件一样)

我点击下方显示图片,我的图片显示在电子邮件正文中,但未从“附件”部分删除。

如果我回到我的邮箱并回到电子邮件,它看起来很好。

我不明白为什么会那样做。它不是链接图像(来自外部URL),并且在将嵌入图像从Gmail发送到Gmail时不会发生。这就是让我觉得我可能会做错事的原因,我担心它可能影响其他接收者。

2 个答案:

答案 0 :(得分:29)

我使用与您使用完全相同的标题取得了成功,但有以下不同之处:

答案 1 :(得分:2)

我在Gmail中加载内嵌图片时遇到问题,我发现我误用了PHP中的PEAR Mail_Mime库。 如前所述,Content-ID必须格式化为消息ID。 如果未提供域ID,PEAR Mail_Mime库将尝试将domainID添加到您的Content-ID。 它还将尝试正则表达式替换电子邮件的HTML正文中的这些Content-ID以维护链接。在我的情况下,此步骤失败,最终破坏了从HTML标记到MIME附件的链接。因此,Gmail拒绝显示内嵌图像是完全正确的。但它确实将图像显示为附件。