node.js - Nodemailer 图像不使用 gmail 从本地 CDN 呈现
问题描述
我的任务是创建一个简单的邮件工具,用于向我们公司的内部团队发送电子邮件。我已经完成了创建电子邮件模板和使用 NodeJS 的练习,使用 nodemailer 库基于此模板创建消息并将电子邮件发送给用户。但是,在尝试将图像添加到模板时,发送给收件人的电子邮件会将图像重写为似乎是 google 缓存代理系统,即
https://somesystem.some.localtion.io/content/myimage.png
被重写为:
由于我们使用了谷歌缓存/代理系统无法访问的本地 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 公开,因此这不是一个选项。如果有任何其他建议,请告诉我。
解决方案
设置一个图片 URL 代理白名单,告诉谷歌不要代理你的 CDN 提供的图片。
推荐阅读
- postgresql - postgres LAG() 使用错误的先前值
- python - 抓取维基百科
- airflow - 气流任务启动问题
- rust - 某些枚举变体未实现调试特征
- python - 将文本文件转换为键字符串和值整数的字典
- c# - 在 Wpf Datagrid 上的特定位置放置一个控件
- reactjs - 在 React 组件中使用 JS 创建具有 onClick 属性的元素以进行函数调用
- python - 如何在 2 元组集中找到具有特定第一个元素的 2 元组?
- android - XML 标记有空的正文少... (Ctrl+F1) 报告空的标记正文。验证适用于 XML / JSP / JSPX / HTML/ XHTML 文件类型
- android - 数据已插入 SQLite Android 数据库但未显示