Gmail 电子邮件中的图像未显示

Mal*_*wan 4 proxy gmail caching

我知道 gmail 和 hotmail 已经推出了自己的图像代理。我已经发送了带有 src 的简单 img 标签的电子邮件

src="http://www.zong360office.com/assets/images/logo/product-logo.png"
Run Code Online (Sandbox Code Playgroud)

Gmail 像这样转换它

src="https://ci3.googleusercontent.com/proxy/PCxvUIqBvaJWn_7H8deiQhdJD1QKV_pU5n1JhrPh3xaXMLMzcdSBYCo6-tjs69AYy858H4j5ShIRjw0UrH_VWMtCxC0zIT-Gi4j_dlQv9uRZjzGWFWA=s0-d-e1-ft#http://www.zong360office.com/assets/images/logo/product-logo.png"
Run Code Online (Sandbox Code Playgroud)

原始 URL 是图像的直接 URL。在附图中,您可以看到该图像的请求和响应标头。

问题:请告诉我应该采取哪些步骤才能使该图像在 gmail 中可见。

PS:我的hotmail也遇到同样的问题。

Mal*_*wan 6

我想我已经解决了 GoogleImageProxy 问题。

我也在另一个问题中回答了这个问题(gmail电子邮件中的图像未显示)。

这与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,那么您的
  • 响应必须包含正确的标头,例如“content-type:image/jpeg”
  • 文件扩展名和内容类型标头必须匹配
  • 状态代码必须是 200 而不是 403、500 等

重要的提示

尝试在每次运行 php-email 脚本时重复整个过程。因为每次 GoogleImageProxy 都会缓存您的图像,并且您必须为每次新尝试重复相同的过程。

希望这能解决大多数人的问题。就我而言,这已经解决了问题。