我认为我已经解决了GoogleImageProxy的问题。
我也在另一个问题中回答了这个问题(
图片在Gmail邮件中无法显示)。
这与缓存概念有关。假设你最近在服务器上部署了你的PHP代码,但是你忘记上传图像。你测试了一次你的电子邮件逻辑。当这封电子邮件到达Gmail服务器时,GoogleImageProxy会尝试从你的网站获取和存储图像到其自己的代理服务器。在获取图像时,GoogleImageProxy发现一些404状态针对丢失的图像和403针对一些受保护的图像。GoogleImagesProxy已将这些状态存储到其自己的代理服务器中。
现在尝试打开你的电子邮件,你会注意到一些404状态针对你的图像。这是可以理解的。你立即意识到你忘记上传一些图像,所以你上传了它们到你的服务器。并且你已经修复了一些对受保护图像的权限。
你现在已经完成了所有工作。现在你再次尝试运行你的php-email脚本。结果是,在Gmail或Hotmail收件箱中收到了另一封电子邮件。你已经解决了所有图像的问题。现在图像必须显示在你的电子邮件内容中。但是你仍然无法看到这些图像。
可能你忘记清除浏览器缓存。清除浏览器缓存并重新加载Gmail或Hotmail页面。但结果仍将保持不变。尝试应用几十个修复/补丁并尝试运行php-email脚本数千次。但结果仍将保持不变。没有改进。
真正的问题是什么?让我向你解释一下。前往你的访问日志并尝试查找来自GoogleImageProxy的请求。你会惊讶地发现,根据电子邮件中使用的不同图像数量,GoogleImageProxy只会有2或3个请求。即使你已经通过上传缺失的图像和设置受保护图像的权限来解决图像问题,GoogleImageProxy也从未尝试获取图像。为什么?清除浏览器缓存没有影响。即使对于您的新电子邮件,GoogleImageProxy也永远不会获取新鲜的图像,因为这些图像现在被缓存在GoogleImageProxy中,并带有它们的最后状态代码,而不是缓存在您自己的浏览器中。
GoogleImageProxy已为图像设置了自己的过期日期,我认为是一个月。因此,新鲜图像的副本将在到期日期后获取。我的意思是一个月之后。你无法强制GoogleImageProxy获取图像。但是,显示电子邮件中的图像对你很重要。有什么解决办法吗?
以下是唯一的强制GoogleImageProxy获取您的图像的方法。
- 将您的图像重命名为png、jpg或gif扩展名。
- 不要在图像URL中使用任何类型的查询字符串,如“?t=34343”。
- 您的图像必须包括png、jpg或gif作为扩展名。
- 您的图像URL必须直接映射到您的图像。
- 如果您需要为受保护的图像使用代理URL,则您的响应必须包括正确的标题,如“content-type:image/jpeg”。
- 文件扩展名和内容类型标题必须匹配。
- 状态代码必须为200,而不是403、500等。
重要提示
尝试为每次运行php-email脚本重复整个过程。因为每次GoogleImageProxy都会缓存您的图像,您将不得不为每个新尝试重复相同的过程。
希望这可以解决大多数人的问题。在我的情况下,这已经解决了问题。