HTML邮件在Gmail中-嵌入图片

8

在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" alt="ALTERNATE TEXT" >
</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

我到底做错了什么?

感谢任何建议!


你是如何生成邮件的? - itsols
我只是想从Gmail发送一封带有一个嵌入式图像的简单邮件。 - Van de Graff
1个回答

10

我按照问题 4018709 中的说明进行操作,取得了良好的效果。简而言之,你需要将附件的内容ID格式化为邮件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...

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接