由gmail代理阻止的SVG图像

时间:2013-12-28 14:21:05

标签: svg proxy gmail phantomjs

似乎新的图像gmail代理无法与SVG一起使用(如果在新标签中打开代理网址,则会出现404错误。)

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

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

背景:

这是一个发送每日摘要电子邮件的网络应用程序,显示过去24小时内的图表(因此svg每天都不同,在电子邮件中显示它会让用户省去点击该应用程序的麻烦。)< / p>

我知道SVG图像在某些电子邮件客户端中不起作用,但它的工作率为95%,其余的仍可点击进入网络应用程序。

在本月早些时候代理更改之前,它在gmail中运行良好(该代码在本月底刚刚推出到Google Apps帐户。)

1 个答案:

答案 0 :(得分:23)

我从谷歌的支持中听到了回复,并且他们已经确认目前没有计划在代理中支持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 \