您可以将内联 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 不喜欢内联版本。还有其他想法吗? 对电子邮件客户端使用code
code
的支持很差。你不会在 gmail 上显示,雅虎,或现代版本的 Outlook。如果由于某种原因必须内联,请使用 code
code
。以下是电子邮件客户端支持在不使用 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 一起使用?
图像/svg+xml 格式的 Mandrill base64 内联图像在电子邮件中不可见?