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 行中使用)。因此,内容中的所有=
字符(以及任何不可打印的字符)都必须通过将它们写为=<hex-code>
来“引用”。所以border="0"
被编码成border=3D"0"
。有关更多信息,请查看 RFC 2045。以上是关于Gmail 中的 HTML 电子邮件 - 嵌入图像的主要内容,如果未能解决你的问题,请参考以下文章