为Gmail创建跟踪像素


Creating a Tracking Pixel for Gmail

我正在尝试创建一个跟踪像素,该像素将记录在我的数据库中打开电子邮件的时间。我通过调用URL路径中的php链接来实现这一点。

<img src="http://example.com/lp/index.php?p=tp&ord=xxxx" />

然后在我的控制器中,我有记录时间的代码,然后是读取1x1图像并将其显示在屏幕上的代码。

$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的服务器也需要能够访问它。