我们已经创建了一个允许在外发电子邮件中嵌入图像的系统。
这是我们系统创建的原始消息。此示例包含图像附件和嵌入图像。
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时不会发生。这就是让我觉得我可能会做错事的原因,我担心它可能影响其他接收者。
答案 0 :(得分:29)
我使用与您使用完全相同的标题取得了成功,但有以下不同之处:
Embedded
is not a valid value for the Content-Disposition
header. attachment
应该没问题。 inline
也应该没问题,但我通常会看到attachment
嵌入图片的multipart/related
。
Content-ID
标题的值应该在same format as a message-id中,而looks very much like an email address依次为{{3}}。 <083.gif@yourmailer>
有更好的机会与大多数邮寄者合作。
答案 1 :(得分:2)
我在Gmail中加载内嵌图片时遇到问题,我发现我误用了PHP中的PEAR Mail_Mime库。 如前所述,Content-ID必须格式化为消息ID。 如果未提供域ID,PEAR Mail_Mime库将尝试将domainID添加到您的Content-ID。 它还将尝试正则表达式替换电子邮件的HTML正文中的这些Content-ID以维护链接。在我的情况下,此步骤失败,最终破坏了从HTML标记到MIME附件的链接。因此,Gmail拒绝显示内嵌图像是完全正确的。但它确实将图像显示为附件。