Проблемы с пикселями отслеживания и прокси Gmail

Я пытаюсь реализовать собственный пиксель отслеживания для электронных писем, отправленных из WordPress.

Благодаря этим сообщениям:

Отслеживание электронной почты с помощью PHP и изображения

Отслеживание электронной почты открывается с реальным изображением

и особенно

http://www.phpdevtips.com/2013/06/email-open-tracking-with-php-and-mysql/

Я смог реализовать основную идею.

Электронное письмо загружает пиксель отслеживания через <img src="https://www.example.com/tracking.php?order_id=1" width="100" height="100" />

и в файле tracking.php

$graphic_http =  'https://www.example.com/GIF-example.gif';

header('Content-Type: image/gif');
readfile( $graphic_http );

При открытии файла tracking.php в браузере открывается GIF-изображение для загрузки.

Однако пиксель отслеживания/изображение отслеживания не отображается в электронной почте Gmail. Есть только сломанный логотип изображения, и когда я нажимаю, чтобы показать изображение, эта ссылка открывается

https://ci5.googleusercontent.com/proxy/l2xUKFGnNFKm64zEYmJhOcUmEJm15w9MC1txRRF01tpKlcL3t3O16aMJgbYQkucBySV0xV2T0EsCwikOAC0Z4em6uPzSs38lkHrYBvosRRAk14EfPoEXqC5JdLxRm8ToZmGSQqt_RwHCaBE_3uLgQDVEB05Rdtkq-Xzuw30=s0-d-e1-ft#https://www.example.com/tracking.php?order_id=1

в котором указано Google 404:

Google 404. Это ошибка.

Запрашиваемый URL / прокси / l2xUKFGnNFKm64zEYmJhOcUmEJm15w9MC1txRRF01tpKlcL3t3O16aMJgbYQkucBySV0xV2T0EsCwikOAC0Z4em6uPzSs38lkHrYBvosRRAk14EfPoEXqC5JdLxRm8ToZmGSQqt_RwHCaBE_3uLgQDVEB05Rdtkq-Xzuw30 = s0-d-e1-фут не найден на этом сервере. Это все, что мы знаем.

Кажется, проблема в том, что прокси-сервер Google не может прочитать php-скрипт. Файлы tracking.php и GIF-example.gif имеют права 775 и общедоступны.

В Hotmail это работает, так что это действительно проблема с прокси Google.

Кто-нибудь знает, как разрешить Google Proxy доступ к этому пикселю отслеживания?


person MrWeix    schedule 06.07.2016    source источник


Ответы (2)


Я понял ответ: проблема была с прокси Google и знаком вопроса? в 1_

Адрес Google Proxy был перепутан, потому что он уже содержал вопросительный знак и привел к ошибке 404.

Вместо этого я разрешил это, используя https://www.example.com/tracking.php/order_id=1, а затем в файле tracking.php я использовал не $_GET, а $_SERVER['REQUEST_URI'] и проанализировал строку /order_id=.

Пиксель отслеживания отображается в Gmail и отслеживается в скрипте tracking.php.

person MrWeix    schedule 08.07.2016
comment
Мой отслеживания URL после отправки почты в Gmail выглядит следующим образом ci5.googleusercontent.com/proxy/ alt= class=CToWUd›. Но Gmail отправляет 2 запроса сервера, например ci5.googleusercontent.com/proxy/......... Почему он удаляет URL-адрес моего трекера в сетевом запросе? Пожалуйста, помогите - person sns; 03.09.2018

Все ваши заголовки пытаются заставить браузер загрузить файл и игнорировать его тип файла (поскольку вы никогда не говорите, какой это тип файла). Чтобы изображения отображались в браузере, необходимо задать правильный заголовок.

Это в основном все, что вам нужно сделать:

$orderId = isset($_GET['order_id']) ? $_GET['order_id'] : null;

if ($orderId) {
    // Save stuff in your DB or how you want to log it.
}

header('Content-Type: image/gif');
echo file_get_contents('/absolute/path/to/image.gif');
exit; // Not really necessary, but just to make sure there's no more output.
person Magnus Eriksson    schedule 06.07.2016
comment
Спасибо за ваш отзыв. На самом деле у меня был заголовок ('Content-Type: image/gif'); в моем коде, но забыл добавить его здесь, в вопросе. Спасибо, что указали на это. Однако: предложенное вами решение также не работает. ни file_get_contents, ни readfile. То же самое битое изображение и Google 404 на его проксированном изображении. - person MrWeix; 06.07.2016
comment
Что произойдет, если вы создадите отдельную страницу и поместите на нее тот же тег <img src="...." />? Тогда это работает для вас? Или это что-то связанное с сервером? - person Magnus Eriksson; 07.07.2016