web-dev-qa-db-ja.com

GmailプロキシによってブロックされたSVG画像

画像の新しいGmailプロキシがSVGで動作しないようです(新しいタブでプロキシのURLを開くと、404エラーが発生します)。

サポートされている/ブロックされているファイルの種類に関するドキュメントを見つけることができませんでした。 GmailのSVGは他の人のために機能していますか?

私が考えることができる唯一の回避策は、サーバーでsvgのpngを生成することですPhantomJS-他のオプション?

バックグラウンド:

これは、過去24時間をカバーするグラフを表示する、毎日の概要メールを送信するウェブアプリ用です(そのため、svgは毎日異なり、メールに含まれていると、ユーザーがアプリをクリックする手間が省けます)。

一部のメールクライアントではSVG画像が機能しないことはわかっていますが、95%は機能しますが、残りは引き続きクリックしてWebアプリケーションにアクセスできます。

今月初めにプロキシが変更されるまで、Gmailで問題なく機能していました(月末にGoogle Appsアカウントにロールアウトされたばかりです)。

32
Redzarf

Googleのサポートから連絡があり、プロキシでSVG画像をサポートする予定は現在ないことを確認しました。彼らは、10万通に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 \
23
Redzarf