电子邮件的动态图像,例如倒计时时钟(根据 gmail 图像缓存)

Posted

技术标签:

【中文标题】电子邮件的动态图像,例如倒计时时钟(根据 gmail 图像缓存)【英文标题】:Dynamic Images for email such as countdown clocks (in light of gmail image caching) 【发布时间】:2014-03-15 04:46:30 【问题描述】:

我正在尝试做的事情:电子邮件正文中的动态倒计时

是什么让我感到痛苦:谷歌决定为 gmail 客户端的用户缓存图片

去年 11 月,我使用这种技术为我的公司实现了一个电子邮件倒计时:

Countdown Timer Image GIF in Email

效果很好,但是在 12 月,当 Google 决定为使用 Gmail 客户端的用户缓存所有图片时,他们遇到了麻烦。

http://kickdynamic.com/update-on-the-gmail-image-change/

因此,该问题会影响所有在 gmail 客户端上再次打开电子邮件的人。他们将看到一个缓存的图像。对于倒计时之类的东西,这会造成很大的伤害。

诚然,这有点像一个盲目的求救电话,但有没有人想出一个不受谷歌图像缓存影响的电子邮件倒计时时钟?

【问题讨论】:

请勿发送hh:mm:ss 的图片。发送单个数字 0-9,然后使用 JS 从这些组件图片构建时钟图片。 我认为大多数邮件客户端和网络邮件服务器不会在邮件中执行 javascript 【参考方案1】:

我遇到了同样的问题。因此,使用以下标头,我禁用了图像缓存,它也可以在 Gmail 中使用(因此 Gmail 图像代理尊重缓存标头):

header('Content-Type: image/jpeg');
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

Credits to this library note.

【讨论】:

@Rohitesh 当我这样做时 - 它有效。现在我没有最新的信息。您可以将其测试为提供具有上述标头的图像并将其包含在邮件中。如果您对其进行测试 - 在这里分享结果会很有帮助。谢谢。 嘿@Jordan,它仍然有效。 :) 遵循您的标头步骤,Google 尊重无缓存。但是,通过 GMail“发送”会缓存图像。所以,我必须使用 API 来结束邮件。但是在“接收”邮件时,GMail 不会缓存图像。 我添加了完全相同的标头,并且 gmail 没有缓存 - 但是,在打开电子邮件时获取图像服务器的多个图像请求。 (加载单个 png/gif 的 2 - 3 个请求)。有谁知道避免多次请求的诀窍是什么? 我的猜测是 Gmail 会进行反垃圾邮件验证或其他相关过程,这些会触发电子邮件打开超过 1 次,这会导致分别多次请求图像。 @JordanEnev 这仅在我第一次打开电子邮件时发生,并且如果我有缓存控制标头,如无缓存,无存储。其他方面很好。如果没有这些标题,即使第一次打开也只会产生 1 个请求。

以上是关于电子邮件的动态图像,例如倒计时时钟(根据 gmail 图像缓存)的主要内容,如果未能解决你的问题,请参考以下文章

动态 Python 倒数计时器

MSP430G2553电子时钟实验

发送带有内嵌图像的电子邮件

《数字电子技术》——计时类应用设计报告

向 iOS 应用程序添加正在运行的计数显示计时器,例如时钟秒表?

子母钟系统(网络时钟系统)助力高考精准计时工作建设