首页 > 解决方案 > Nodemailer 图像不使用 gmail 从本地 CDN 呈现

问题描述

我的任务是创建一个简单的邮件工具,用于向我们公司的内部团队发送电子邮件。我已经完成了创建电子邮件模板和使用 NodeJS 的练习,使用 nodemailer 库基于此模板创建消息并将电子邮件发送给用户。但是,在尝试将图像添加到模板时,发送给收件人的电子邮件会将图像重写为似乎是 google 缓存代理系统,即

https://somesystem.some.localtion.io/content/myimage.png

被重写为:

https://ci6.googleusercontent.com/proxy/eXuw8UXTcDdsC03GMBJvrQH1Z-Fbu1blh0cCeAw64q1vfx_C20DTRT-T5FSNJw-3G59tIBb3jmvQIpI9x8O7Us4gyHs3uf01dMytVF-EozUHlr23UGA=ssome0-d-e1-ft#mytVF-EozUHlr23UGA=s00-d-e1-ft#/

由于我们使用了谷歌缓存/代理系统无法访问的本地 CDN,因此图像无法正确解析。

基于以下文章, 电子邮件的动态图像,例如倒计时时钟(根据 gmail 图像缓存)

我已经尝试添加到消息选项的标题中,如下所示:

{
  "host": this.email_server,
  "port": this.port,
  "headers": {
    "Content-Type": "image/jpeg",
    "Cache-Control": "no-store, no-cache, must-revalidate, max-age=0",
    "Cache-Control": "post-check=0, pre-check=0",
    "Pragma": "no-cache"
  }
}

然而问题依然存在。

我们还尝试了对图像进行 base64 编码并将其包含在模板中,但似乎 google 将其删除了。

不幸的是,由于专有图像和其他商业原因,我们无法将此 CDN 公开,因此这不是一个选项。如果有任何其他建议,请告诉我。

标签: node.jsimagegmailnodemailer

解决方案


设置一个图片 URL 代理白名单,告诉谷歌不要代理你的 CDN 提供的图片。


推荐阅读