PHP电子邮件追踪小程序

现在常常发邮件给外国客户,虽然设置了要求对方发送已读回执,可收到回执的概率不到1/10。想起去年用的那个利用网站统计代码时行邮件追踪的方法,试过,但因为发的邮件太多收件人又不止一个,于是那方法不顶用了。于是自己动手写了个电子邮件追踪小程序,对方阅读后可以记下对方阅读的时间,IP和IP归属地,还可以自己备注一些其它信息比如收件人姓名,邮件地址等等。原理还是利用在邮件中插入图片的办法来实现的。

使用方法,在写邮件时候插入图片,图片地址:
http://littlebar.tk/app/email-trace/is-read.php?name=ToWhom&email=HisEmailAddress&note=put-your-note-here&url=read.gif

http://littlebar.tk/app/email-trace/is-read.php?name=收件人姓名&email=对方邮件地址&note=备注信息&url=你喜欢的图片地址

例如:http://littlebar.tk/app/email-trace/is-read.php?name=John&email=John@qq.com¬e=2011年8月4号下午五点发给John的邮件Email2John-at-20110804-1730&url=http://www.google.com/intl/en_com/images/srpr/logo2w.png

图片READ.GIF是本站的一个1*1的透明图片,放在邮件里对方看不见的,当然你可以换成自己喜欢的图片,不过图片不要太大,太在了反映慢。

邮件发送后你就可以不时去http://littlebar.tk/app/email-trace/report.html看看,比如点了上面那张图片就会记录如下内容:

John, John@qq.com, Read, 11-08-04 17:35:41, IP: 219.133.136.220, 广东省深圳市福田区 电信 , 2011年8月4号下午五点发给John的邮件Email2John-at-20110804-1730, http://www.google.com/intl/en_com/images/srpr/logo2w.png,

如果页面的消息太多可用CTRL+F进行查找。

同时顺手写了个链接点击追踪程序,用来确定对方是否点击过你发的链接,调用地址:http://littlebar.tk/app/email-trace/is-clicked.php 使用方法同上面一样只不过是把图片地址换成链接地址就可以了,如:

http://littlebar.tk/app/email-trace/is-clicked.php?name=John&email=John@qq.com&note=看John点击这个链接没有Email2John-at-20110804-1730&url=http://www.google.com/

如果对方点击了则会跳转到GOOGLE.COM这个页面,并且同时会在http://littlebar.tk/app/email-trace/report.html产生如下一条记录:

John, John@qq.com, Clicked, 11-08-04 17:51:57, IP: 219.133.136.220, 广东省深圳市福田区 电信 , 看John点击这个链接没有Email2John-at-20110804-1730, http://www.google.com/,

php代码:

邮件阅读追踪:

<?php
$url = urldecode($_REQUEST&#91;'url'&#93;);
$name = urldecode($_REQUEST&#91;'name'&#93;);
$email = urldecode($_REQUEST&#91;'email'&#93;);
$note = urldecode($_REQUEST&#91;'note'&#93;);

//php获取ip的算法
 if ($HTTP_SERVER_VARS&#91;"HTTP_X_FORWARDED_FOR"&#93;)
  {
  $ip = $HTTP_SERVER_VARS&#91;"HTTP_X_FORWARDED_FOR"&#93;;
  }
  elseif ($HTTP_SERVER_VARS&#91;"HTTP_CLIENT_IP"&#93;)
  {
  $ip = $HTTP_SERVER_VARS&#91;"HTTP_CLIENT_IP"&#93;;
  }
 elseif ($HTTP_SERVER_VARS&#91;"REMOTE_ADDR"&#93;)
 {
 $ip = $HTTP_SERVER_VARS&#91;"REMOTE_ADDR"&#93;;
 }
 elseif (getenv("HTTP_X_FORWARDED_FOR"))
 {
 $ip = getenv("HTTP_X_FORWARDED_FOR");
 }
 elseif (getenv("HTTP_CLIENT_IP"))
 {
 $ip = getenv("HTTP_CLIENT_IP");
 }
 elseif (getenv("REMOTE_ADDR"))
 {
 $ip = getenv("REMOTE_ADDR");
 }
 else
 {
 $ip = "Unknown";
 }
 //echo "你的IP:".$ip ; 

 
//<script src="http://whois.pconline.com.cn/ipJson.jsp?callback=testJson&ip=61.235.82.163"></script>
// 防止乱码 $getcontent = iconv("gb2312", "utf-8",file_get_contents($url));

$iplocation = iconv("gb2312", "utf-8",file_get_contents("http://whois.pconline.com.cn/ip.jsp?ip=$ip"));

//写入文件

file_put_contents("report.html", "<strong>$name, </strong> $email,  <font color='green'>Read</font>, ".date("y-m-d H:i:s").", <strong>IP: </strong>" .$ip.", $iplocation<b>, $note, $url, </b><hr>",FILE_APPEND);

Header ('Content-type: image/png');
readfile($url);
?>

链接追踪:

<?php
$url = urldecode($_REQUEST&#91;'url'&#93;);
$name = urldecode($_REQUEST&#91;'name'&#93;);
$email = urldecode($_REQUEST&#91;'email'&#93;);
$note = urldecode($_REQUEST&#91;'note'&#93;);

//php获取ip的算法
 if ($HTTP_SERVER_VARS&#91;"HTTP_X_FORWARDED_FOR"&#93;)
  {
  $ip = $HTTP_SERVER_VARS&#91;"HTTP_X_FORWARDED_FOR"&#93;;
  }
  elseif ($HTTP_SERVER_VARS&#91;"HTTP_CLIENT_IP"&#93;)
  {
  $ip = $HTTP_SERVER_VARS&#91;"HTTP_CLIENT_IP"&#93;;
  }
 elseif ($HTTP_SERVER_VARS&#91;"REMOTE_ADDR"&#93;)
 {
 $ip = $HTTP_SERVER_VARS&#91;"REMOTE_ADDR"&#93;;
 }
 elseif (getenv("HTTP_X_FORWARDED_FOR"))
 {
 $ip = getenv("HTTP_X_FORWARDED_FOR");
 }
 elseif (getenv("HTTP_CLIENT_IP"))
 {
 $ip = getenv("HTTP_CLIENT_IP");
 }
 elseif (getenv("REMOTE_ADDR"))
 {
 $ip = getenv("REMOTE_ADDR");
 }
 else
 {
 $ip = "Unknown";
 }
 //echo "你的IP:".$ip ; 
 
$iplocation = iconv("gb2312", "utf-8",file_get_contents("http://whois.pconline.com.cn/ip.jsp?ip=$ip"));

//写入文件

file_put_contents("report.html", "<strong>$name, </strong> $email,  <font color='red'>Clicked</font>, ".date("y-m-d H:i:s").", <strong>IP: </strong>" .$ip.", $iplocation<b>, $note, $url, </b><hr>",FILE_APPEND);

header("Location: $url"); 
?>

当然也可以直接下载:php-email-tracker.zip

5 Comments

Add a Comment

Your email address will not be published.