2016-08-11 5 views
0

私の組織から大量のメールを送信しています。私は電子メールを開いた人を追跡したい私はそれが100%実現可能ではないことを知っていますが、まだいくつかの統計があります。 MailchimpまたはPostmarkから電子メールを送信すると、開かれた電子メールを正しく追跡することができます。Googleが画像リンクをプロキシに追加しましたが、画像が表示されません

イメージはAmazon S3にあり、電子メールはAmazon SES経由で送信されます。私は、ユーザを記録したurlでイメージのsrcを設定し、イメージを返します。ブラウザでそのURLを開くと、正しくエントリが記録され、イメージがダウンロードされます。

問題は、Gmailが画像の前にプロキシを追加するため、画像がまったく読み込まれないことです。 私はSymfony2.8を使用しています。これは私が送信する応答です。

$response = new Response(); 

    $disposition = $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, 'myimage.png'); 
    $response->headers->set("Content-Disposition", $disposition); 
    $response->setPublic(); 
    $response->headers->set("Content-Transfer-Encoding", "binary"); 
    $response->setCache(array('max_age' => 0, 'public' => true)); 
    $response->mustRevalidate(); 
    $response->setExpires(0); 
    $response->headers->set("Content-Type", "image/png"); 
    $response->headers->set("Content-Length", 10240); 
    $response->setContent(file_get_contents("http://some-amazon-link/assets/logo/pressweb/myimage.png")); 

    return $response; 

P.S.私はStackや他のウェブサイトでそれに関するほとんどすべての質問を読んだ。私のコードに何か問題があるかもしれません。私は知らないよ。 ありがとうございます。

答えて

0

これは私のために働いたものです。 Lucianoのおかげで、私は彼のサイトで解決策を見つけました。 http://loige.co/transparent-pixel-response-with-symfony-how-to-track-email-opening/ トラッキングは個人的な選択です。つまり、IDを使用してユーザーを追跡する方法などです。コード全体が自分のサイトにあります。

class TransparentPixelResponse extends Response 
{ 
/** 
* Base 64 encoded contents for 1px transparent gif and png 
* @var string 
*/ 
const IMAGE_CONTENT = 
    'R0lGODlhAQABAJAAAP8AAAAAACH5BAUQAAAALAAAAAABAAEAAAICBAEAOw==' 
; 

/** 
* The response content type 
* @var string 
*/ 
const CONTENT_TYPE = 'image/gif'; 

/** 
* Constructor 
*/ 
public function __construct() 
{ 
    $content = base64_decode(self::IMAGE_CONTENT); 
    parent::__construct($content); 
    $this->headers->set('Content-Type', self::CONTENT_TYPE); 
    $this->setPrivate(); 
    $this->headers->addCacheControlDirective('no-cache', true); 
    $this->headers->addCacheControlDirective('must-revalidate', true); 
} 

}

関連する問題