Я пытаюсь реализовать пользовательский пиксель отслеживания для писем, отправленных из 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. Там только сломанный логотип с изображением, и когда я нажимаю, чтобы показать изображение, открывается эта ссылка
который заявляет Google 404:
Google 404. Это ошибка.
Запрашиваемый URL / прокси / l2xUKFGnNFKm64zEYmJhOcUmEJm15w9MC1txRRF01tpKlcL3t3O16aMJgbYQkucBySV0xV2T0EsCwikOAC0Z4em6uPzSs38lkHrYBvosRRAk14EfPoEXqC5JdLxRm8ToZmGSQqt_RwHCaBE_3uLgQDVEB05Rdtkq-Xzuw30 = s0-d-e1-фут не найден на этом сервере. Это все, что мы знаем.
Кажется, проблема в том, что прокси Google не может прочитать скрипт php. Файлы tracking.php и GIF-example.gif имеют права 775 и доступны для общего доступа.
На Hotmail это работает, так что, похоже, проблема с прокси Google.
Кто-нибудь знает, как позволить Прокси Google получить доступ к этому пикселю отслеживания?
Я разобрался с ответом: проблема была с Google Proxies и знаком вопроса? в https://www.example.com/tracking.php?order_id=1
Адрес прокси Google был испорчен, потому что у него уже был вопросительный знак, и в результате 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.