Я пытаюсь создать отслеживающий пиксель, который будет регистрировать время открытия электронного письма в моей базе данных. Я делаю это, вызывая ссылку php в пути URL.
<img src="http://example.com/lp/index.php?p=tp&ord=xxxx" />
Затем в моем контроллере у меня есть код, который регистрирует время, за которым следует этот бит кода, который читает изображение 1×1 и отображает его на экране.
$fileOut = 'inc/sections/common/tpixel.jpg';
header("Content-Type: image/jpg");
header('Content-Length: ' . filesize($fileOut));
readfile($fileOut);
Это работает должным образом, если тег img помещается в HTML веб-страницы, а веб-страница просматривается в браузере. Однако, когда я помещаю этот тег изображения в электронное письмо и просматриваю его с помощью gmail, отметка времени не срабатывает и изображение не отображается. Он просто возвращает ошибку 404.
Любые идеи относительно того, почему просмотр изображения в Gmail вернется не найден?
Разве это не лучший способ сделать это? Это моя первая попытка слежения за пикселем.
Также обратите внимание, что я кликаю по изображению в письме, чтобы активировать его.
Это произойдет, если ваш URL не является общедоступным.
Это потому, что GMail прокси изображения: https://blog.filippo.io/how-the-new-gmail-image-proxy-works-and-what-this-means-for-you/ — поэтому недостаточно, чтобы вы могли получить доступ к URL-адресу отслеживающего пикселя из браузера: серверы GMail также должны иметь к нему доступ.
Других решений пока нет …