未显示 Gmail 的图片
Posted
技术标签:
【中文标题】未显示 Gmail 的图片【英文标题】:Images not displayed for Gmail 【发布时间】:2014-01-17 04:24:14 【问题描述】:最近,Google 宣布,出于安全考虑,Gmail 将使用代理加载外部图片。这导致我的应用程序在 gmail 中显示图像时出现问题。
Gmail 图片元素检查: https://ci5.googleusercontent.com/proxy/N4RZncgANd5glVi64ElKxecSE10SH6iAhu2VKOK3jJtgaRKBUsqwOn6iDwY49unvlD9Xi6cSZp0T4u1N_KHhBY-TxFaV8P***SMn4A=s0-d-e1-ft#http://localhost:8080/email/thread/1301/images/correct)不重复“>올바른답변
根据上面的 html,实际图像 URL 前面带有一个 Google 代理 URL,以阻止要显示的图像。如果我们删除这个垃圾 URL,图像开始看起来很好。 Apple Mac 邮件不会出现同样的问题。
我们使用 Java Mailing API 提供了邮件功能。请提出建议。
谢谢, 迪维亚·加格
【问题讨论】:
我在使用 Magento 中的 hMail 服务器从 loaclhost 向其他用户发送电子邮件时遇到了类似的问题。 任何人解决它??? 【参考方案1】:这里的问题是您用于邮件的 URL。从提供的信息来看,它似乎是:
http://localhost:8080/email/thread/1301/images/correct
这是一个指向本地计算机上文件的 URL。但是,该 URL(而不是实际图像)正在传递给 Google 的代理进行检索。 Google 无法从其代理访问该 URL,因此图像不会出现。
解决方案是确保您使用的路径可以在本地网络之外访问;例如,通过将图像托管在面向外部的服务器上。
【讨论】:
出于开发目的,您可以在调试器控制台 (F12) 中使用此 javascript 来显示此图片: (function() while(img = document.evaluate('//img[contains(@ src, \'googleusercontent.com\')]', 文档,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue) var src = img.attributes.src.value; src = src.substr(src.indexOf('# ')+1); img.attributes.src.value = src; )(); 对于outlook.com:(function() while(img = document.evaluate('//img[contains(@src, \'mail.live.com\')]', document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue) var src = img.attributes.src.value; src = src.substr(src.indexOf('url=')+4); img.attributes.src.value = decodeURIComponent(src); )();
@JBreton 它冻结了我的电脑
@JBreton 即使这曾经在某些时候有效,但现在看来它冻结了我在 Mac 上的 Firefox。
@VictorBredihin @medonja GMail 设计更改破坏了我的 ol'lil'script。这是一个更新的:(function() while(img = document.evaluate('//img[contains(@src, \'googleusercontent.com\')][contains(@src, \'#\')]', document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue) var src = img.attributes.src.value; src = src.substr(src.indexOf('#')+1); img.attributes.src.value = src; )();
我添加了一个条件,src 现在需要包含#。这可以防止无限循环。以上是关于未显示 Gmail 的图片的主要内容,如果未能解决你的问题,请参考以下文章
图片未显示在 Gmail 中 - 使用 django python-postmark