【问题标题】:PHP Email Pixel Tracking Not Firing in Yahoo Mail雅虎邮箱中未触发 PHP 电子邮件像素跟踪
【发布时间】:2013-11-05 06:29:54
【问题描述】:

为了跟踪电子邮件打开率,我在从我的服务器发送的大量电子邮件中触发了一个像素。该脚本在 Mac Mail 中运行。收到电子邮件并下载像素。

但是,它在 Yahoo 邮件客户端中不起作用。收到电子邮件,下载并显示引用的图像,但是像素不会触发/下载,php 脚本也不会运行(据我所知)。有谁知道为什么雅虎邮件客户端和我尚未测试的其他潜在客户端会发生这种情况?

这里是html的img标签:

<img src="http://mysite.com/email_track.php?email=email_value&country=country_value&state=state_value" />

这是 php 脚本:

<?php


// Database code omitted

$result= mysql_query("INSERT INTO `CelebrationOpens` SET `time` = NOW(), `country` = '$country', `state` = '$state', `email` = '$email' ") or die(mysql_error());

// Create an image, 1x1 pixel in size
$im=imagecreate(1,1);

// Set the background colour
$white=imagecolorallocate($im,255,255,255);

// Allocate the background colour
imagesetpixel($im,1,1,$white);

// Set the image type
header("content-type:image/jpg");

// Create a JPEG file from the image
imagejpeg($im);

// Free memory associated with the image
imagedestroy($im);

?>

我也尝试过像这样触发像素:

$name = './concert/pixel.png';
$fp = fopen($name, 'rb');


header("Content-Type: image/png");
header("Content-Length: " . filesize($name));

fpassthru($fp);
exit;

【问题讨论】:

  • 图像拦截器是我的猜测。除非用户接受图像,否则许多/大多数电子邮件程序可以阻止图像。
  • @Class 我认为这是不可能的,因为电子邮件中显示了其他图像。我将编辑我的问题以澄清这一点。
  • 我首先要检查的是您的网络服务器日志。如果其他图像下载正常,那么您的 Web 服务器日志将包括它们的命中。日志是否还包括跟踪像素的命中?如果不是,那么客户端永远不会请求它。如果是,那么返回状态是否为 200?
  • @AlexHowansky 如果我使用 imagecreate() 函数创建图像,该图像在日志中的名称是什么?
  • 也许他们正在缓存像素图像?使用 curl --head http://... 访问像素 URL,查看它发送的标头。

标签: php email html-email yahoo


【解决方案1】:

您提到您正在使用所有嵌入的图像,这就是为什么它们总是显示的原因,与您是否选择为您的电子邮件下载图像无关。嵌入图像是图像阻塞的解决方法,但会导致电子邮件的文件很大。

所有非嵌入图像都需要显示才能正常工作。您的跟踪像素就是其中之一。 Apple 客户端默认下载所有图像,而其他客户端则不下载。跟踪图像未触发,因为您尚未在 Yahoo(或任何其他客户端)的电子邮件中下载图像。

不幸的是,这是对开放式跟踪的限制,也是数据不完整且总是偏向于 Apple 客户的原因。开放式跟踪实际上意味着“他们打开它并取消阻止图像或他们在 Apple 上打开”。

【讨论】:

  • 我可能用了错误的词,说“嵌入”。我的图像是带有 url 参考的 标签。单击“显示图像”后,我的雅虎客户端“下载”了所有图像。我认为一旦我清除了所有要下载的图像,像素应该会触发。
【解决方案2】:

我找到了罪魁祸首,这与缓存像素链接有关。我在 img src 中附加了一个随机字符串,它现在可以在 ymail 和 gmail 中使用。

图像标签现在看起来像这样:

<img src="http://mysite.com/email_track.php?email=email_value&country=country_value&state=state_value&random_value=<?php echo rand() ?>" />

感谢您帮助我发现这一发现。

【讨论】:

    猜你喜欢
    • 2013-09-19
    • 2011-06-21
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 2012-01-13
    • 2011-06-29
    相关资源
    最近更新 更多