跟踪电子邮件的读取时间

时间:2010-10-17 05:16:42

标签: php email outlook tracking

问候花,

我被要求使用PHP编写电子邮件跟踪器代码。 电子邮件客户端请求我的PHP脚本认为它是一个图像(BODY的背景)。 但是,在我的PHP脚本达到超时之前,客户端(即Outlook 2007)会挂起(不显示任何内容)。

<?php
define("DB_FILE", "sqlite:C:\wamp\www\database.sdb");
define("QUERY", "INSERT INTO Receipt (counter_id, reader_id, start_time, end_time) VALUES (%s, \"%s\", %d, %d)");
define("TIME_OUT", "10");

function track() {
    global $counter_id;
    global $reader_id;
    global $start_time;

    $end_time = time();

    $db = new PDO(DB_FILE);
    $db->exec(sprintf(QUERY, $counter_id, $reader_id, $start_time, $end_time));
}

$counter_id = $_GET["counter_id"];
$reader_id  = $_SERVER["REMOTE_ADDR"];
$start_time = time();

set_time_limit(TIME_OUT);
register_shutdown_function("track");

while(!connection_aborted()) {
    echo "\n";
    ob_flush();
}
?>

这是一个循环,它应该在客户端读取被跟踪的电子邮件期间保持HTTP连接的活动状态。 有关如何解决这个问题的想法吗?

此致

2 个答案:

答案 0 :(得分:1)

我担心没有明智的方法可以告诉某人花了多长时间查看电子邮件。邮件客户端的设计并没有考虑到这种数据收集,并且试图强制网络连接保持打开只会导致您遇到的问题。

答案 1 :(得分:0)

有人(公司)通过利用浏览器将继续为gif请求更多帧(参见技术here)直到您告诉他们这一事实,对电子邮件的打开时间进行一些简单的跟踪最后一帧已经发送。