【问题标题】:Tracking for How Long an Email was Read跟踪电子邮件的阅读时间
【发布时间】:2010-10-17 05:16:42
【问题描述】:

问候溢出者,

我被要求使用 PHP 编写一个电子邮件跟踪器。 电子邮件客户端请求我的 PHP 脚本,认为它是图像(身体的背景)。 但是,客户端(即 Outlook 2007)会挂起(什么也不显示),直到我的 PHP 脚本超时。

<?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 连接处于活动状态的循环。 关于如何解决这个问题的任何想法?

问候

【问题讨论】:

  • 您不太可能做到这一点。当有人查看电子邮件或访问网站时,没有继续连接。有来回,但不是你想要做的。 Outlook 挂起的原因是因为它正在等待您的“图像”出现,这就是它超时的原因。
  • 是的,请不要这样做。告诉你的经理或任何其他人,这是一个糟糕透顶的想法,而且确实不正确。
  • 谢谢你们,是的,我同意这是一个糟糕的主意!知道商业软件(电子邮件跟踪器)如何跟踪时间吗?
  • 我还没有遇到任何可以实际跟踪时间的分析包......而且我确实知道我的竞争对手在该领域的大部分能力。我能想到的唯一方法是使用 Flash 或某种形式的基于客户端的计时器,它可以在服务器运行时向服务器发送“滴答”……但我反对任何尝试过的邮件。

标签: php email outlook tracking


【解决方案1】:

恐怕没有明智的方法来判断某人花了多长时间查看电子邮件。邮件客户端在设计时根本没有考虑到这种数据收集,并且试图强制网络连接保持打开状态只会导致您遇到的那种问题。

【讨论】:

    【解决方案2】:

    有些人(公司)利用浏览器会继续为 gif 请求更多帧的事实(参见技术here)来做一些简单的电子邮件打开时长跟踪,直到你告诉他们最后一个帧已发送。

    【讨论】:

      猜你喜欢
      • 2021-11-27
      • 2012-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-30
      • 1970-01-01
      相关资源
      最近更新 更多