【问题标题】:How to create an email with embedded images that is compatible with the most mail clients如何创建与大多数邮件客户端兼容的嵌入图像的电子邮件
【发布时间】:2011-04-30 10:37:04
【问题描述】:

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

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

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--

还有其他我应该添加的标题或我应该遵循的规则吗?

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

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

图片不显示。
在下方显示图像 - 始终显示来自...的图像

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

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

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

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

【问题讨论】:

  • embedded 不是有效的内容处置。它必须是inlineattachment

标签: mime attachment embedded-resource


【解决方案1】:

我已经成功使用了与您使用的完全相同的标题,但有以下区别:

【讨论】:

  • 感谢@Jan 提供的信息。我缺少的主要是将 cid 放在 MIME 部分的 Content-ID 标头中的尖括号中,如下所示:Content-ID: &lt;my.random.id@some.domain&gt;,同时仍使用 HTML 中的非括号版本,如下所示:&lt;img src="cid:my.random.id@some.domain"&gt;。这解决了我在 GMail 客户端中的问题。
  • 人们需要关注的另一件事是,对于 Hotmail,&lt;img src='cid:xxx' ... /&gt; 将不起作用。你必须改用&lt;img src="cid:xxx" ... /&gt;
  • @EarthEngine 让我明白了你的意思:使用单引号而不是双引号。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2010-11-09
    • 2018-04-27
    • 2012-11-15
    • 2010-11-13
    • 1970-01-01
    • 2011-05-29
    • 2017-04-01
    • 2023-03-27
    • 2021-07-24
    相关资源
    最近更新 更多