我想我已经解决了GoogleImageProxy问题。
这与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作为扩展名。
- 您的图片网址必须直接映射到您的图片。
- 如果您需要为受保护的图片使用一些代理网址,则您的响应必须包含正确的标头,例如
Content-Type: image/jpeg
- 文件扩展名和内容类型标题必须匹配
- 状态码必须是200,而不是403、500等
重要的提示
尝试为每次运行php-email脚本重复整个过程。因为每次GoogleImageProxy都会缓存您的图片,并且每次尝试时都必须重复相同的过程。
希望这将解决大多数人的问题。