电子邮件跟踪图像记录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了电子邮件跟踪图像记录相关的知识,希望对你有一定的参考价值。

Add an image to the email, must be linked not embedded ie in thunderbird mail moz-do-not-send attribute must be set true.

any requests for this gif image will be redirected through display which will log the request and serve up the stored t.gif image.

the log file name will be as the requested gif file in this case loggingname.txt in the /log directory
  1. create a /track and a /track/log directory under webroot
  2.  
  3. find a 1x1 transparent gif image and upload to the /track directory as t.gif
  4.  
  5. add .htaccess file to the track directory
  6.  
  7. -.htaccess--------
  8.  
  9. <filesMatch ".(gif|txt)$">
  10. FileETag None
  11. <ifModule mod_headers.c>
  12. Header unset ETag
  13. Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
  14. Header set Pragma "no-cache"
  15. Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
  16. </ifModule>
  17. </filesMatch>
  18.  
  19. IndexIgnore *
  20.  
  21. RewriteEngine on
  22. RewriteRule .(gif)$ display.php [NC]
  23.  
  24. -end .htaccess---------
  25.  
  26.  
  27. Create display.php in the /track directory
  28.  
  29. ---display.php-----
  30.  
  31. <?php
  32. //ini_set('display_startup_errors',1);
  33. //ini_set('display_errors',1);
  34. //error_reporting(-1);
  35.  
  36. function writeAccess($filename) {
  37.  
  38. //time for log
  39. if( ($time = $_SERVER['REQUEST_TIME']) == '') {
  40. $time = time();
  41. }
  42.  
  43.  
  44. if (empty($_SERVER['REMOTE_ADDR'])){
  45. $remote_addr = ' unknown';
  46. $remoteHost = ' unknown';
  47. } else {
  48.  
  49. $remote_addr = $_SERVER['REMOTE_ADDR'];
  50. $remoteHost= gethostbyaddr($remote_addr);
  51. //$remoteHost='no';
  52. }
  53.  
  54.  
  55. //$_SERVER["HTTP_USER_AGENT"]
  56. if (empty($_SERVER['HTTP_USER_AGENT'])){
  57. $remoteAgent=' No User Agent';
  58. } else {
  59. $remoteAgent=$_SERVER['HTTP_USER_AGENT'];
  60.  
  61. }
  62.  
  63. // Format the date and time
  64. $date = date("Y-m-d H:i:s", $time);
  65.  
  66. //remove extension then spaces
  67. $filename = preg_replace("/\.[^.\s]{3,4}$/", "", $filename);//remove 3or4 char extension
  68. $filename = str_replace(' ', '', $filename); //remove spaces
  69. $filename = $_SERVER["DOCUMENT_ROOT"] . '/track/log/'. $filename .'.txt';
  70.  
  71. // Append to the log file
  72. if($fd = @fopen($filename, "a")) {
  73. $result = fputcsv($fd, array($date, $remote_addr, $remoteHost, $remoteAgent));
  74. fclose($fd);
  75. }
  76. }
  77.  
  78. //get name of request file filter out any spaces and %20 and sanitize
  79. $url_array = explode("/", $_SERVER["REQUEST_URI"]);
  80. $filename = $url_array[ count($url_array) - 1 ];
  81. $filename=str_replace('%20', '-', $filename);
  82. $filename=htmlspecialchars(trim($filename));
  83.  
  84. //log
  85. writeAccess($filename);
  86.  
  87.  
  88. //$data = file_get_contents($_SERVER["DOCUMENT_ROOT"] . '/track/t.gif');
  89.  
  90.  
  91. header("Content-Type: image/gif");
  92. //echo $data;
  93. readfile($_SERVER["DOCUMENT_ROOT"] . '/track/t.gif');
  94. exit();
  95.  
  96.  
  97. ---------end display.php------
  98.  
  99.  
  100.  
  101. Add <img src="http://website.co.uk/track/loggingname.gif"> to the email, this must not be embedded ie in thunderbird mail moz-do-not-send attribute must be set true.
  102.  
  103. any requests for this gif image will be redirected through display.php which will log the request and serve up the stored t.gif image.
  104.  
  105. the log file name will be as the requested gif file in this case loggingname.txt in the /log directory

以上是关于电子邮件跟踪图像记录的主要内容,如果未能解决你的问题,请参考以下文章

php中的电子邮件跟踪技术

超实用的php代码片段

php 一个短代码片段准备在WooCommerce Thank You页面上输出货件跟踪UI。

在 Firebase 中禁用自动活动跟踪

群发邮件追踪

跟踪大量电子邮件活动