PHP电子邮件像素跟踪在雅虎邮件中不起作用

时间:2013-11-05 06:29:55

标签: php email html-email yahoo

为了跟踪电子邮件开放率,我在我从服务器发送的群发电子邮件中触发了一个像素。该脚本在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;

2 个答案:

答案 0 :(得分:0)

您提到您正在使用所有嵌入式图片,这就是他们总是展示的原因,与您是否选择下载电子邮件图片无关。嵌入图像是图像阻止的解决方法,但会导致电子邮件的大文件大小。

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

不幸的是,这是开放式跟踪的限制,以及为什么数据不完整并且总是偏向Apple客户端。开放式跟踪真的意味着'他们打开它并解锁图像或者他们在Apple上打开了。

答案 1 :(得分:0)

我找到了罪魁祸首,它与缓存像素链接有关。我在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() ?>" />

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