关于html:电子邮件签名中的base64编码图像

base64 encoded images in email signatures

我必须在电子邮件签名中包含一些图片(公司徽标等)。我使用电子邮件系统生成的嵌入图像(它们通常作为附件发送)和链接图像(需要在收到的电子邮件中显示它们)时遇到了各种各样的问题。

我刚刚看到一些来自Exchange的电子邮件,它有一个base64图像的徽标表示,并使用一个标签来进行显示。我正在寻找一些信息,如有可能,我如何在电子邮件签名中做到这一点(我如何为一个开始生成base64版本的徽标,以及我需要什么代码才能使它工作)?

我尝试过一些简单的事情,比如

但我所得到的只是alt文本,所以我显然在做一些错误的事情。


图像应作为如下附件嵌入到邮件中:

而且,HTML部分将引用这样的图像:

在一些客户机中,src="sig.png"也可以工作。

您基本上有一个多部分/混合的、多部分/可选的、多部分/相关的消息,其中图像附件在相关部分中。您可以查看这个mbox文件的源代码(它使用文件名示例而不是cid示例)来获得一个想法。

客户端也不应该阻止此图像,因为它不是远程的。

或者,这里有一个multipart/alternative,multipart/相关的示例,作为一个mbox文件(另存为Windows换行格式,并在末尾放一个空行)。并且,不使用扩展名或.mbs扩展名):

您可以将其导入Sylpheed或Thunderbird(使用导入/导出工具扩展)或Opera的内置邮件客户端。然后,在Opera中,您可以切换"首选纯文本"以查看HTML和文本版本之间的区别。无论如何,您将看到HTML版本使用了SIG中的嵌入图片。


重要的

下面的答案显示了如何使用数据URI嵌入图像。这对网络很有用,但对于大多数电子邮件客户机来说不可靠。对于电子邮件,请务必阅读shadow2531的答案。

Base-64数据在img标记中是合法的,我相信您的问题是如何正确插入这样的图像标记。

您可以使用在线工具或几行代码来生成base 64字符串。

从内联数据中获取图像的语法是:

http://en.wikipedia.org/wiki/data_uri_方案


最近我也遇到了同样的问题,在电子邮件中加入了qr-image/png。QR图像是一个字节数组,使用zxing生成。我们不想将其保存到文件中,因为保存/读取文件的成本太高(速度太慢)。所以上面的两个答案对我都不起作用。以下是我为解决这个问题所做的:

假设contentID是"111122223333",那么您的HTML部分应该有:

不需要将字节数组转换为base64,因为commons mail会自动为您进行转换。希望这有帮助。