javascript - 发送的图像与山魈不显示

标签 javascript email meteor localhost mandrill

我正在尝试在使用 Mandrill 从 Meteor 站点发送的电子邮件中包含图像。在我的本地主机上测试该网站时,我尝试发送电子邮件以确保所有内容都正确显示,但图像未加载。这是我到目前为止所做的:

在我的山魈模板中,我有 <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. 在本地主机上处理 Meteor 实例(您的 URL 类似于 http://localhost:3000/some-path)
  2. 您调用 Mandrill API 发送电子邮件,包括本地托管的图像文件作为 URL(该文件可在您的本地计算机上访问,例如,您可以将其放在 /public/images/file-name.png )
  3. 您要求 Meteor 创建图像的绝对 URL(使用 Meteor.absoluteUrl()),但 Meteor 仅在本地文件系统上创建图像的链接。
  4. Mandrill 发送电子邮件,当收件人打开电子邮件时,他们会看到图像的缓存版本(GMail 捕获图像并将其缓存在 Google 服务器上,因此 https://ci6.googleusercontent.com/proxy/ 图像前缀。
  5. 由于您的图像仅存在于本地文件系统中,因此无法在电子邮件指示 HTML 查找它的位置访问该图像。

建议的修复

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

或者,部署您的应用程序来测试它,例如meteor 部署 mysite.meteor.com 因为该图像将通过这种方式公开提供。

关于javascript - 发送的图像与山魈不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28687510/

相关文章:

java - 在 Anypoint Studio (MuleSoft) 中发送电子邮件时出错

javascript - nodemailer多个收件人不同的上下文

php - 使用php自动发送电子邮件

meteor - 注册 Meteor 帐户时需要额外信息

javascript - 如何在 Jquery 中使用 $(this) 选择器 append div?

javascript - 无法在 php print 中获得 JavaScript 变量的正确语法

javascript - Meteor 无法更新 mongo?

Meteor Accounts-ui 在用户访问之前等待电子邮件验证

javascript - 使用服务器路由 react 路由器浏览器历史记录

javascript - node_modules 文件夹太大