Gmail 中的 HTML 电子邮件 - 嵌入图像

Posted

技术标签:

【中文标题】Gmail 中的 HTML 电子邮件 - 嵌入图像【英文标题】:HTML Email in Gmail - embedding images 【发布时间】:2011-11-09 16:51:24 【问题描述】:

在 gmail 中带有嵌入图像的 html 邮件 - 带有以下电子邮件正文 - 只是吐出确切的文本。它不显示“body”标签内的内容。

这是邮件的内容:

Content-Type: multipart/related;

boundary="bananarepublic12345"

This is a multipart message in MIME format.

--banana12345republic

Content-Type: text/html; charset=ISO-8859-1

Content-Transfer-Encoding: 7bit


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" 
      "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head> 
     <title>testing embedded image</title>
</head>
<body bgcolor="#000">
    <h1> Testing Embedded Image</h1>
    <img src="cid:mambo"  >
</body>
</html>

--bananarepublic12345

Content-Type: image/jpeg; name=big-image1.jpg

Content-Transfer-Encoding: base64

Content-ID: <mambo>

Content-Disposition: inline;

filename="big-image1.jpg"

/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ...//2Q%3D%3D

我在哪里

感谢您的任何建议!

【问题讨论】:

你是如何生成邮件的? 手动。我只是想从 gmail 发送一封简单的邮件,其中包含一个嵌入的图像。 【参考方案1】:

我已按照问题中的说明进行操作 4018709 并且效果很好。总而言之,您需要将附件的内容 ID 格式化为消息 ID(其格式又类似于电子邮件地址 - 带有 @ 和域),并且在 MIME 部分标题中具有内容 ID 值用尖括号括起来的图像(就像你已经做的那样)。

因此,示例电子邮件可能如下所示:

Date: Fri, 2 Dec 2011 06:57:55 GMT
Message-Id: <201112020657.pB26vttQ010231@geek.co.il>
Content-Type: multipart/related; boundary="=-blabla"; type="multipart/alternative"
From: Some sender <some-sender@geek.co.il>
To: Me <me@geek.co.il>
Subject: HTML content with embedded images
MIME-Version: 1.0

--=-blabla
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: quoted-printable

<html><body>
<h1>Header</h1>
<h2><a href=3D"http://geek.co.il">link</a></h2>
<p>
<img border=3D"0" =
src=3D"cid:some.random.id@geek.co.il"/>
<p>
</body></html>

--=-blabla
Content-ID: <some.random.id@geek.co.il>
Content-Disposition: inline; filename="image.png"
Content-Type: image/png; name="image.png"
Content-Transfer-Encoding: base64

iVBORw0KGgoAAAANSUhEUgAAA9YAAAE2CAMAAACz7PorAAADAFBMVEUAAAC9...

【讨论】:

等号后的“3D”在你的 html 中做了什么? 从 HTML 部分的 MIME 标头中可以看出,HTML 部分使用“quoted-printable”编码进行编码。 Quoted-printable 是一种最小的文本编码,它允许通过使用= 字符分割长行来强制设置最大行宽(您可以看到它在HTML 的第5 行中使用)。因此,内容中的所有= 字符(以及任何不可打印的字符)都必须通过将它们写为=&lt;hex-code&gt; 来“引用”。所以border="0" 被编码成border=3D"0"。有关更多信息,请查看 RFC 2045。

以上是关于Gmail 中的 HTML 电子邮件 - 嵌入图像的主要内容,如果未能解决你的问题,请参考以下文章

如何阻止电子邮件中的嵌入图像被 GMail 显示为附件?

Python - 使用嵌入图像向 GMAIL 发送邮件

使用 Gmail API 时,您能否以及如何在电子邮件中嵌入图像?

Gmail 阻止电子邮件模板中嵌入的小型嵌入式图像

Base64 图像到 gmail

html 电子邮件中的背景图像 css - Gmail 不支持