Mandrill 嵌入图像无法正确解释

Posted

技术标签:

【中文标题】Mandrill 嵌入图像无法正确解释【英文标题】:Mandrill embed image cannot get interpreted properly 【发布时间】:2016-02-17 05:46:34 【问题描述】:

我在 Nodejs 中使用 Mandrill 向客户发送电子邮件,并希望在我的电子邮件附件的 html 内容中嵌入图像。我从https://mandrill.zendesk.com/hc/en-us/articles/205582457-Tips-for-using-images-in-Mandrill-emails 找到了一些解决方案,并决定使用第 4 个解决方案,其中包括 html 中内联的图像。代码如下:

var message = 
  html: htmlContent,
  subject: "Subject",
  ...
  images = [
    "type": logo.logoType, // which is "image/jpeg"
    "name": "logo",
    "content": content // the content is valid when using in <img src="data:image/jpeg;base64,content"> directly
  ]
;
mandrillClient.messages.send(
  message: message
, function() 
  callback(null);
, function(err) 
  callback(err);
)

htmlContent中对应的html代码是

<img src="cid:logo">

但是,当我在 Mandrill 出站活动中检查已发送的电子邮件时,“查看内容”无法正确显示图像。而且我查看了html源码,发现图片代码还是那样

<img src="cid:logo">

纯文本没有被图像数据替换。

我怎样才能让它正常工作?有什么想法吗?

提前致谢。

【问题讨论】:

【参考方案1】:

最后,我发现它在 Mandrill Outbound Activity 中检查已发送电子邮件时不起作用,但在您的实际电子邮件收件箱中却可以正常工作。所以这意味着你在做测试时永远看不到嵌入的图像,你必须使用生产 API 密钥发送它,并在真实的电子邮件收件箱中看到结果。

仅供参考。希望没有人会像我一样在这件事上浪费时间。 :)

【讨论】:

您好,Junlynn,通过在 html 内容中仅提及带有 cid 的图像名称,例如 &lt;img src="cid:logo"&gt; 以及内容中图像名称的 base64 编码,它如何知道图像的托管位置。我们是否应该将完整的 url 路径编码为 base64..? 您需要在每个图像实体的“内容”字段中提供图像内容。所以它不需要知道它的托管位置。

以上是关于Mandrill 嵌入图像无法正确解释的主要内容,如果未能解决你的问题,请参考以下文章

Mandrill Handlebar 模板无法正确渲染/与 Parse.com 对象合并

在 iOS 中使用 Mandrill API 的电子邮件无法正常使用图像附件

无法使用 Parse Cloud Code 和 Mandrill 发送电子邮件

mandril 拒绝原因:未签名

MailChimp (Mandrill) for .NET 为啥电子邮件包含图像?

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