Проблемы с пикселями отслеживания и прокси-сервером 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 Proxies.

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

Я понял ответ: проблема была в Google Proxies и вопросительном знаке? в https://www.example.com/tracking.php?order_id=1

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

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

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

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

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

 $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.