与Mandrill一起发送的图像不显示

时间:2015-02-24 03:03:58

标签: javascript email meteor localhost mandrill

我正在尝试将图像包含在与Merill发送的电子邮件中。在我的localhost上测试网站时,我尝试发送电子邮件以确保所有内容都正确显示,但图像未加载。这是我到目前为止所做的:

在我的Mandrill模板中,我有<img src="*|MYIMAGESOURCE|*" alt="some alt text">

我是我的Meteor代码:

Meteor.Mandrill.sendTemplate({
    ...
    "message" : {
        "global_merge_vars" : [{
          "name" : "myimagesource",
          "content" : Meteor.absoluteUrl("myimage.png", {"replaceLocalhost" : true})
        }],
        ...
      }
    ...
)};

我已尝试使用replaceLocalhost"content"以及src的值的其他几种变体。我收到了电子邮件,但图片被带有问号的白框取代。当我检查元素时,src="https://ci6.googleusercontent.com/proxy/[random letters and numbers]#http://local.mywebsite.com:3000/myimage.png"属性就像{{1}}。

我需要做些什么才能正确加载图片?

1 个答案:

答案 0 :(得分:1)

您需要确保图片存在于可公开访问的服务器上,以便按照您的预期运行。

如果我理解正确,您可以执行以下操作:

  1. 在localhost上处理Meteor实例(您的网址看起来像http://localhost:3000/some-path
  2. 您调用Mandrill API发送电子邮件,包括本地托管的图片文件作为网址(该文件可在您的本地计算机上访问,例如您在/public/images/file-name.png中拥有该文件)
  3. 您要求Meteor创建图像的绝对URL(使用Meteor.absoluteUrl(),但Meteor仅创建指向本地文件系统上图像的链接。
  4. Mandrill发送电子邮件,当收件人打开电子邮件时,他们会看到图片的缓存版本(GMail会抓取图片并将其缓存在Google服务器上,因此会为您的图片添加https://ci6.googleusercontent.com/proxy/前缀。
  5. 由于您的图片仅存在于您的本地文件系统中,因此无法在电子邮件告知HTML查找的位置访问该图像。
  6. 建议修复

    如果您需要在本地运行此测试,则可以使用可公开访问的图像而不是本地图像(例如,使用http://imgur.com/来托管虚拟图像,然后在Mandrill调用中使用"content": "http://i.imgur.com/WBFQlsJ.png"

    或者,部署您的应用以测试它,例如meteor deploy mysite.meteor.com因为图片将以这种方式公开发布。