我想我已经解决了 GoogleImageProxy 的问题。
我也在另一个问题中回答了这个问题 (images inside gmail email not being displayed)。
这与 CACHING 概念有关。假设,您最近在您的服务器上部署了您的 php 代码,但您忘记上传图片。你用你的电子邮件逻辑测试过一次。您的系统生成了一封 HTML 电子邮件。当这封电子邮件到达 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 扩展名将图像重命名为其他名称
仅限。
- 请勿在图片网址中使用任何类型的查询字符串,例如“?t=34343”
- 您的图片必须包含 png、jpg 或 gif 作为扩展名。
- 您的图片网址必须直接映射到您的图片上。
- 如果您需要为受保护的图像使用一些代理 URL,那么您的
- 响应必须包含正确的标题,例如
“内容类型:图像/JPEG”
- 文件扩展名和内容类型标头必须匹配
- 状态码必须是 200 而不是 403、500 等
重要提示
尝试为每次运行 php-email 脚本重复整个过程。因为每次 GoogleImageProxy 都会缓存您的图片,您必须为每次新尝试重复相同的过程。
希望这能解决大多数人的问题。就我而言,这已经解决了这个问题。