Base64 图片到 gmail

新手上路,请多包涵

我正在为从 iPad 发送的电子邮件生成一些内联图像。在所有桌面电子邮件客户端中看起来都很棒,但 gmail 似乎不喜欢 base64 图像,它显示为文本。

有人有运气用 base64 和 gmail 嵌入图像吗?或者知道从 iPad 发送带有图像的 HTML 电子邮件的更好解决方案吗?

原文由 Steven Baughman 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.1k
2 个回答

Moin Zaman 的链接显示了过时的测试结果(从 2008 年开始)。根据我今天的全面测试,Gmail 确实支持为这两种方法显示嵌入式图像。

<img src="..."> 中内联使用 base64 编码图像

<html><body><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA9QAAADmCAIAAAC77FroAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAO..."></body></html>

使用base64编码的图片作为附件

Message-ID: <BE0243A40B89D84DB342702BC5FD6D313EA3BE1B@BYMAIL.example.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator:
x-originating-ip: [xxx.xxx.xxx.xxx]

Content-Type: multipart/related;
    boundary="_038_BE0243A40B89D84DB342702BC5FD6D313EA3BE1BBYMAIL_";
    type="multipart/alternative"
MIME-Version: 1.0
Return-Path: email@example.com
X-OriginatorOrg: example.com

--_038_BE0243A40B89D84DB342702BC5FD6D313EA3BE1BBYMAIL_
Content-Type: multipart/alternative;
    boundary="_000_BE0243A40B89D84DB342702BC5FD6D313EA3BE1BBYMAIL_"

...skipping Content-Type: text/plain which would be here for this example...

--_000_BE0243A40B89D84DB342702BC5FD6D313EA3BE1BBYMAIL_
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<html><body><img border=3D"0" width=3D"980" height=3D"230" id=3D"Picture_x0020_1" src==3D"cid:image001.png@01CDA268.204677C0"></body></html>

--_000_BE0243A40B89D84DB342702BC5FD6D313EA3BE1BBYMAIL_--

--_038_BE0243A40B89D84DB342702BC5FD6D313EA3BE1BBYMAIL_
Content-Type: image/png; name="image001.png"
Content-Description: image001.png
Content-Disposition: inline; filename="image001.png"; size=32756;
    creation-date="Mon, 08 Oct 2012 15:27:07 GMT";
    modification-date="Mon, 08 Oct 2012 15:27:07 GMT";
Content-ID: <image001.png@01CDA268.204677C0>
Content-Transfer-Encoding: base64

iVBORw0KGgoAAAANSUhEUgAAA9QAAADmCAIAAAC77FroAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAO
xAAADsQBlSsOGwAAf5lJREFUeF7tvQlgVdW18L+ZR20mpsSLCYlBQKwgwRCMr9TAqzg0CAl98Y9a
ikBfHxL1A/r0tUr77Feg1mDav4LUijxTk8hLRIstQ2mJhEiAWAEpNCGRa8KUSQXCzLf2cOZz7j33
5s5Zx6j3nruHtX97n33WWWfttbtdv36d4IEEkAASQAJIAAkgASSABJCA/wl0938VWAMSQAJIAAkg
ASSABJAAEkAClAAq3zgOkAASQAJIAAkgASSABJBAgAig8h0g0FgNEkACSAAJIAEkgASQABJA5RvH
...

要进行您自己的测试,您可以使用以下技术之一发送带有内联嵌入图像的电子邮件

使用上述方法之一向您的 Gmail 帐户发送电子邮件,然后在 Gmail Web 客户端(任何可用的浏览器)中打开电子邮件并使用回复按钮旁边的向下箭头选择显示原始选项。这将向您展示它是如何被接收的。

我认为最佳做法是使用嵌入图像作为附件方法。

在我使用 Gmail Web Client 进行的测试中,如果我在一封电子邮件中发送了 30 张不同大小的图像,其中一些将无法成功加载,显示图像容器而不是图像。如果发生这种情况,请尝试重新加载页面。

在我的测试中(Windows 7)…

  • Chrome(最新)需要重新加载几次才能成功加载/显示所有 30 张图像
  • 无论重新加载多少次,Opera(最新)都不会成功显示所有 30 张图像
  • Firefox(最新)始终毫无问题地显示所有 30 张图像
  • Internet Explorer 9(最新)始终毫无问题地显示所有 30 张图像
  • Safari(最新)始终毫无问题地显示所有 30 张图像

原文由 cusman 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题