Я пытаюсь реализовать настраиваемый пиксель отслеживания для электронных писем, отправленных из 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.