您可以将内联 base64 编码图像添加到 Mandrill 模板吗?

Posted

技术标签:

【中文标题】您可以将内联 base64 编码图像添加到 Mandrill 模板吗?【英文标题】:Can you add inline base64 encoded image to a Mandrill template? 【发布时间】:2014-12-30 14:27:48 【问题描述】:

有谁知道是否以及如何将 Base64 编码图像添加到 Mandrill 模板。

我使用 Mandrill 模板来确保我的所有电子邮件都具有相同的外观和感觉,并且我有一个简单而小的徽标,我希望按照以下建议将其添加到我的模板中: http://help.mandrill.com/entries/25252978-Tips-for-using-images-in-Mandrill-emails

但是我不确定在我的 html 模板中的何处以及如何添加必要的代码。任何人都知道它是否可能以及如何做?

谢谢

【问题讨论】:

【参考方案1】:

我可能已经找到了自己问题的答案。

否 - Mandrill 不允许您添加内嵌图像或将图像附件作为代码上传到模板。

解决方案 - 您需要按照 API 中的建议将数组 [images] 添加到 $message。

这是一个 php 示例函数:

// Add cid image to $message
function add_email_logo($message) 
  $logo = array (
    'images' => array (
      array (
              'type' => 'image/png',
              'name' => 'logo',
              'content' => 'iVBORw0KGgoAAAANSUhEUgAA....etc.'
      )
    )
  );

  return array_merge( $message, $logo);

并使用图像 src="cid:name"

<img src="cid:logo"/>

【讨论】:

嗨,我在我的 html 模板中包含了 ,但是当我在 mandrill 出站活动中检查发送的电子邮件时,我发现图像数据没有正确附加.相反,它只是在 html 中显示 '' 纯文本。任何想法?提前致谢。【参考方案2】:

在您链接到的页面中间告诉您可以将img 标记与base64 编码图像一起使用

使用 API 调用将图像作为内联附件包含在内 图像参数。您需要提供图片名称 (Content-ID), 内容(作为 base64 编码的字符串)和图像 MIME 类型。 在您的 HTML 内容中引用“src”中的图像名称:

<img src="cid:image_name">

src 属性使用Data URI scheme。一般格式是

<img src="data:(MIME TYPE);base64,(IMAGEDATA BASE 64 ENCODED)">

这里是图片列表media types

图片/gif 图片/JPEG 图片/pjpeg 图片/png 图片/svg+xml 图片/vnd.djvy 图片/示例

获取 html 标签形式的 base64 编码图像的最简单方法是使用在线转换器。谷歌搜索 base64 encode image 会产生大量具有此功能的结果。

【讨论】:

是的,但是... Mandrill / Gmail 不喜欢内联版本。还有其他想法吗? 对电子邮件客户端使用codecode 的支持很差。你不会在 gmail 上显示,雅虎,或现代版本的 Outlook。如果由于某种原因必须内联,请使用 codecode。以下是电子邮件客户端支持在不使用 cid 的情况下内联图像的一些统计信息:line . 2013 年的运行测试,但这些结果对于 2015 年这些客户端的最新版本仍然有效。【参考方案3】:

以 Mandril 为例

<img src="cid:image_name">

应该替换为

<img src="cid:image_name" />

否则,图片只会附加到邮件中,不会显示在邮件中

【讨论】:

【参考方案4】:

还有很重要的一点要注意images[].content&attachments[].content属性必须是开头没有任何data:(MIME TYPE);base64,构造的base64字符串,只是一个字符串

【讨论】:

以上是关于您可以将内联 base64 编码图像添加到 Mandrill 模板吗?的主要内容,如果未能解决你的问题,请参考以下文章

IE6:如何让内联 base64 图像与 IE6 一起使用?

将 base64 编码图像保存到 Firebase 存储

用base64编码图像有啥效果?

图像/svg+xml 格式的 Mandrill base64 内联图像在电子邮件中不可见?

使用 Alamofire 上传具有 base64String 编码的多个图像的数组

为网站使用内联/base64 图像比仅链接到硬文件快多少?