被 gmail 代理阻止的 SVG 图像

Posted

技术标签:

【中文标题】被 gmail 代理阻止的 SVG 图像【英文标题】:SVG images blocked by gmail proxy 【发布时间】:2014-01-15 22:13:54 【问题描述】:

似乎新的 gmail 图像代理不适用于 SVG(如果您在新选项卡中打开代理 url,则会出现 404 错误。)

我找不到任何有关支持/阻止的文件类型的文档。 gmail 中的 SVG 是否适用于其他人?

我能想到的唯一解决方法是使用 PhantomJS 在服务器上生成 svg 的 png - 还有其他选项吗?

背景:

这适用于发送每日摘要电子邮件的 web 应用程序,显示过去 24 小时的图表(因此 svg 每天都不同,将它放在电子邮件中可以为用户省去点击进入应用程序的麻烦。)

我知道 SVG 图像在某些电子邮件客户端中无法使用,但 95% 可以使用,其余的仍然可以点击进入 web 应用程序。

在本月初代理更改之前,它在 gmail 中运行良好(本月底才刚刚推出到 Google Apps 帐户。)

【问题讨论】:

【参考方案1】:

我收到了 Google 支持的回复,他们确认目前没有计划在代理中支持 SVG 图像。他们说,他们只占 100,000 封电子邮件图像中的 1 个。

除了 PhantomJs,更简单的 svg 的一个选项是 php 插件 ImageMagick。

这里有一些示例代码可以帮助您入门:

header("Content-Type: image/png");
header("Content-Disposition: inline;");
if (empty($svg)) 
    readfile("invisibleImage.png", true);
 else 

    //TODO: You'll probably want to set headers to cache the returned image

    $filepath = "/path/to/where/images/are/cached/";

    if (!file_exists("$filepath$svgName.png")) 
        if (!is_dir($filepath)) 
            mkdir($filepath, 0700, 1);
        
        file_put_contents("$filepath$svgName.svg", $svg);
        $cmd = "rsvg-convert $filepath$msk.svg > $filepath$svgName.png";
        exec($cmd);
        unlink("$filepath$svgName.svg");
    
    readfile("$filepath$svgName.png");

您至少需要安装以下一些:

apt-get install librsvg2-bin libpng3 imagemagick libpng12-dev \

【讨论】:

多么厚颜无耻的逻辑! - 这只是 100,000 人中的 1 人,因为没有人愿意发送不受支持的东西 ;) 也许这应该更响亮地听到……?你能分享一个联系谷歌支持的方法吗(只问有多种方法,我尝试了几个 - 没有得到任何回应)。 我通过企业支持收到了我的 Google Apps for Work 帐户的回复。如果您有帐户并且感兴趣,那么每个询问的人都会帮助给予它更高的优先级......但老实说,我仍然不会抱有很大希望。一年过去了,ImageMagick 选项对我们来说效果很好——我们的需求并不太复杂。我在答案中添加了一些示例代码。 另外,为了公平起见,即使 Google 确实支持 svg - 大多数电子邮件客户端也不支持。所以需求可能会保持低位。

以上是关于被 gmail 代理阻止的 SVG 图像的主要内容,如果未能解决你的问题,请参考以下文章

我可以阻止静止的 SVG 图像在 QML 中使用过多的 CPU 资源吗?

Gmail 阻止电子邮件模板中嵌入的小型嵌入式图像

如何在GMAILS Chrome扩展程序中阻止图像加载?

测试是不是可以从 Web 浏览器访问 URL,即确保没有被代理服务器阻止

SVG 阻止触摸/鼠标滚轮事件

自动化gmail登录[在oAuth期间]被用户验证阻止