Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Caching gmail电子邮件中的图像未显示_Caching_Proxy_Gmail - Fatal编程技术网

Caching gmail电子邮件中的图像未显示

Caching gmail电子邮件中的图像未显示,caching,proxy,gmail,Caching,Proxy,Gmail,我知道gmail和hotmail已经推出了自己的图像代理。我已经发送了带有简单img标签和src的电子邮件 src="http://www.zong360office.com/assets/images/logo/product-logo.png" gmail将它转换成这样 src="https://ci3.googleusercontent.com/proxy/PCxvUIqBvaJWn_7H8deiQhdJD1QKV_pU5n1JhrPh3xaXMLMzcdSBYCo6-tjs69AYy8

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

src="http://www.zong360office.com/assets/images/logo/product-logo.png"
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"
原始URL是指向图像的直接URL。在附加的图像中,您可以看到此图像的请求和响应标题

问题:请让我知道我应该采取什么步骤使此图像在gmail中可见。


PS:我在hotmail上也面临同样的问题

这些是嵌入的图像。您将图像作为附件发送,然后在img元素中使用它,如:。Gmail将“cid”链接转换为其内部文件存储链接,这就是为什么它提供了元素

这是在电子邮件中显示图像的两种常见方法之一


另一种方法是将图像保存在主机中,并通过外部链接发送img元素:我强烈建议使用第二种方法,尤其是如果您希望在电子邮件中包含大量图像。我无法解决Gmail上显示的附加图像的问题。

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

我在另一个问题中也回答了这个问题()

这与缓存概念有关。假设您最近在服务器上部署了php代码,但忘记上载图像。您用电子邮件逻辑测试了一次。您的系统生成了一封HTML电子邮件。当这封邮件到达gmail服务器时,GoogleImageProxy将尝试从您的站点获取图像并将其存储到自己的代理服务器。在获取图像时,GoogleImageProxy在丢失的图像中找到了404个状态,在一些受保护的图像中找到了403个状态。GoogleImagesProxy已经将这些状态存储到自己的代理服务器中

现在试图打开你的电子邮件,你注意到一些404状态对你的图像。这是可以理解的。你马上意识到你忘记上传一些图片,所以你把它们上传到了你的服务器上。此外,您还修复了对受保护图像的一些权限

你现在都做完了。现在再次尝试运行php电子邮件脚本。因此,您会在Gmail或Hotmail收件箱中收到另一封电子邮件。您已经修复了图像的所有问题。现在图像必须显示在您的电子邮件内容中。但您仍然无法看到图像

啊,可能你忘了清除浏览器的缓存。清除浏览器缓存并再次加载gmail或hotmail页面。但结果仍然是一样的。尝试应用几十个修复程序/补丁,并尝试运行php电子邮件脚本数千次。但结果仍然是一样的。没有改善

真正的问题

到底怎么回事?让我给你解释一下。转到您的访问日志,尝试查找来自GoogleImageProxy的请求。你会惊讶地发现,根据电子邮件中使用的不同图像的数量,Google ImageProxy只会发出两三个请求。GoogleImageProxy从未尝试获取图像,即使您已通过上载丢失的图像和设置受保护图像的权限修复了图像的问题。为什么?清除浏览器缓存不会产生任何影响。GoogleImageProxy将永远不会获取新的图像,即使是您的新电子邮件,因为图像现在与最后的状态代码一起缓存到GoogleImageProxy中,而不会缓存到您自己的浏览器中

GoogleImageProxy已经为这些图像设置了自己的过期日期。我想是一个月。因此,现在图像的新副本将在到期日后取回。我是说一个月后。您不能强制GoogleImageProxy获取图像。但在电子邮件中显示图像对你来说很重要。解决办法是什么

解决方案

以下是强制GoogleImageProxy获取图像的唯一方法

  • 将图像重命名为其他具有png、jpg或gif扩展名的图像 只是
  • 不要在图像url中使用任何类型的查询字符串,如“?t=343”
  • 您的图像必须包含png、jpg或gif作为扩展名
  • 图像url必须直接映射到图像上
  • 如果需要为受保护的图像使用代理url,则
  • 响应必须包括适当的标题,如 “内容类型:图像/jpeg”
  • 文件扩展名和内容类型标头必须匹配
  • 状态代码必须为200,而不是403、500等
重要提示

尝试在每次运行php电子邮件脚本时重复整个过程。因为每次GoogleImageProxy都会缓存你的图像,你每次尝试都要重复同样的过程


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

请确保您的发件人地址是真正有效的电子邮件,而不是
realname格式+something@example.com


我正在使用AmazonSES发送电子邮件,并将一些但不是所有的图片作为附件内联。对我来说,这是非附件正在打破

最后,我意识到我在用一封“假”电子邮件来发送发件人

我真正的电子邮件是

 simon@example.com
为了便于在gmail中过滤电子邮件,我使用
+
语法创建了一封“假”电子邮件,用于测试

 simon+test@example.com
这非常有效,只是它似乎改变了垃圾邮件/图像过滤器的行为。我的图像标签最后完全去掉了
src
属性


当我重新使用实际的电子邮件时,所有的图像都出现了。

我也遇到了这种情况。您使用的是什么框架?在附件中指定了为我工作的图像的mime类型。@AwaisQarni这不是电子邮件附件。我发送了一封邮件正文中带有img标签的HTML电子邮件。所以问题是gmail的邮件正文中没有显示图像。相反,它显示的是空白图像place-holder.Bilal,我没有将该图像嵌入html电子邮件中