我正在尝试在使用 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"
.
我需要做什么才能正确加载图像?
最佳答案
您需要确保该图像存在于可公开访问的服务器上的某个位置,才能使其按您的预期工作。
如果我理解正确的话,您正在执行以下操作:
- 在本地主机上处理 Meteor 实例(您的 URL 类似于
http://localhost:3000/some-path
) - 您调用 Mandrill API 发送电子邮件,包括本地托管的图像文件作为 URL(该文件可在您的本地计算机上访问,例如,您可以将其放在
/public/images/file-name.png
) - 您要求 Meteor 创建图像的绝对 URL(使用
Meteor.absoluteUrl()
),但 Meteor 仅在本地文件系统上创建图像的链接。 - Mandrill 发送电子邮件,当收件人打开电子邮件时,他们会看到图像的缓存版本(GMail 捕获图像并将其缓存在 Google 服务器上,因此
https://ci6.googleusercontent.com/proxy/
图像前缀。 - 由于您的图像仅存在于本地文件系统中,因此无法在电子邮件指示 HTML 查找它的位置访问该图像。
建议的修复
如果您需要在本地运行此测试,您可以使用可公开访问的图像而不是本地镜像(例如,使用 http://imgur.com/ 托管虚拟图像,然后使用 "content": "http:///i.imgur.com/WBFQlsJ.png"
在您的 Mandrill 调用中。
或者,部署您的应用程序来测试它,例如meteor 部署 mysite.meteor.com
因为该图像将通过这种方式公开提供。
关于javascript - 发送的图像与山魈不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28687510/