电子邮件签名中的base64编码图像

Pet*_*Unn 87 html email base64 image

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

我刚刚看到来自交易所的一些电子邮件,其中包含徽标的base64图像表示,并使用标签进行显示.如果可能的话,我正在寻找一些关于如何在电子邮件签名中执行此操作的信息(如何为一个开始生成徽标的base64版本以及我需要使用哪些代码才能使其工作)?

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

<body>
<span>
<img src=.... >
</span>
</body>
Run Code Online (Sandbox Code Playgroud)

但我得到的是替代文字,所以我显然在这里做错了.

Sha*_*531 116

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

--boundary
Content-Type: image/png; name="sig.png"
Content-Disposition: inline; filename="sig.png"
Content-Transfer-Encoding: base64
Content-ID: <0123456789>
Content-Location: sig.png

base64 data

--boundary
Run Code Online (Sandbox Code Playgroud)

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

<img src="cid:0123456789">
Run Code Online (Sandbox Code Playgroud)

在某些客户端,src ="sig.png"也可以.

你基本上有一个multipart/mixed,multipart/alternative,multipart/related消息,其中图像附件在相关部分.您可以查看此mbox文件的来源(它使用文件名示例而不是cid示例)来获得一个想法.

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

或者,这是一个多部分/替代,多部分/相关示例作为mbox文件(保存为Windows换行格式并在末尾添加一个空行.并且,不使用扩展名或.mbs扩展名):

From 
From: from@example.com
To: to@example.com
Subject: HTML Messages with Embedded Pic in Signature
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="alternative_boundary"

This is a message with multiple parts in MIME format.

--alternative_boundary
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit

test

-- 
[Picture of a Christmas Tree]

--alternative_boundary
Content-Type: multipart/related; boundary="related_boundary"

--related_boundary
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: 8bit

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <p>test</p>
        <p class="sig">-- <br><img src="cid:0123456789"></p>
    </body>
</html>

--related_boundary
Content-Type: image/png; name="sig.png"
Content-Disposition: inline; filename="sig.png"
Content-Location: sig.png
Content-ID: <0123456789>
Content-Transfer-Encoding: base64

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
cHkgSG9saWRheXMgUGFnZQA7

--related_boundary--

--alternative_boundary--
Run Code Online (Sandbox Code Playgroud)

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

  • 你能告诉我@ Shadow2531多部分/相关代码会去哪里吗?它应该在同一个HTML文件中吗? (2认同)
  • “像这样”……像什么?我是 Faisal,您如何*将此内容纳入您的消息中*? (2认同)
  • @Scott 这取决于客户。在 Thunderbird 中,您选择附加 HTML 文件的签名。然后,在 HTML 文件中,使用带有 src="path to local image file" 的 HTML img 标签。然后由 Thunderbird 以 Base64 方式嵌入该本地图像并在插入签名时引用它。 (2认同)
  • 好吧,那条评论颠覆了我的理解。我所做的是创建一个 HTM 文件,然后将其加载到 Outlook 中。然后我使用签名编辑器的“替换图像”功能来选择一个本地文件(而不是我手动包含的 base64 编码图像)。这似乎符合你的意思。谢谢你一直陪着我。 (2认同)

Tim*_*ora 58

重要

我在下面的回答显示了如何使用数据URI嵌入图像.这对Web很有用,但对大多数电子邮件客户端无法可靠地运行.出于电子邮件的目的,请务必阅读Shadow2531的答案.


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

您可以使用在线工具或几行代码生成基本64字符串.

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

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot">
Run Code Online (Sandbox Code Playgroud)

http://en.wikipedia.org/wiki/Data_URI_scheme

  • 试过这个,但Gmail似乎不支持它.嵌入式附件解决方案似乎有效. (12认同)
  • 2016年大多数电子邮件客户端的嵌入仍然不可靠吗? (5认同)