PHP怎么获取邮件是否已被查看阅读等信息

在发送邮件的功能当中难免会有一些需要统计谁在什么时候查看了邮件,是否被对方阅读等等的需求

在有些时候你或许很想知道该邮件是否被对方已阅读,获取到该邮件的阅读状态,但是你不能要求让对方发送回执给你

所以就需要一些小技巧,这里有个非常有趣的Api能够显示对方IP地址、记录阅读的实际时间和浏览器类型等等,应该可以满足你的需求

能干些什么?

  1. 记录 IP
  2. 阅读时间
  3. 浏览器类型
  4. 写日志
  5. 写数据库
  6. 更多功能可以自己加…

更多的功能呢,比如你需要统计到具体的人,也可以增加参数,然后进行获取

扩展

需要开启对应扩展,生成img图片需要的GD库,单文件的话所需要的Mysqli,框架接入的话就简单多了,入库操作就使用自带ORM即可

用法

在你的邮件中加入如下代码,前提是你的邮件需要支持html格式内容

<img src="http://yourdomain.com/img.php" style="display:none;">

代码

对应的代码很简单,我这里以单文件做演示,可以加到对应的框架控制器方法中

<?php
/**
* author: ShenYan.
* Email:[email protected]
* CreatedTime: 2019/1/22 18:25
*/
error_reporting(0);
Header("Content-Type: image/jpeg");

// Get IP
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
  $ip=$_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
  $ip= $_SERVER['REMOTE_ADDR'];
}

// Time
$actual_time = date('Y-m-d H:i:s', time());

// Get Browser
$browser = $_SERVER['HTTP_USER_AGENT'];

// Log
$myFile = dirname(__FILE__). "/logs.txt";
$fh = fopen($myFile, 'a+');
$stringData = $actual_time .' '. $ip . ' ' . $browser ."\r\n";
fwrite($fh, $stringData);
fclose($fh);

// Generate Image (Es. dimesion is 1x1)
$newimage = ImageCreate(1, 1);
$grigio = ImageColorAllocate($newimage, 255, 255, 255);
ImageJPEG($newimage);
ImageDestroy($newimage);

原理

具体的原理也是很简单的,加入一个1*1的小图标,隐藏掉,当某人打开邮件的时候就会请求改图片的url,做好对应的参数获取即可

但是部分邮箱可能会对其进行拦截,如果被举报过多可能会进入垃圾箱中~

代码地址:Github

6 条评论

发表评论

*