在发送邮件的功能当中难免会有一些需要统计谁在什么时候查看了邮件,是否被对方阅读等等的需求
在有些时候你或许很想知道该邮件是否被对方已阅读,获取到该邮件的阅读状态,但是你不能要求让对方发送回执给你
所以就需要一些小技巧,这里有个非常有趣的Api
能够显示对方IP
地址、记录阅读的实际时间和浏览器类型等等,应该可以满足你的需求
能干些什么?
- 记录 IP
- 阅读时间
- 浏览器类型
- 写日志
- 写数据库
- 更多功能可以自己加…
更多的功能呢,比如你需要统计到具体的人,也可以增加参数,然后进行获取
扩展
需要开启对应扩展,生成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
小白弱弱的问下,都配置好了,该如何查看呢?
@缙哥哥 当前目录下logs.txt
聪明了,回头测试下!
学习!隔行如隔山,看不懂
感谢分享,php可以批量发送邮件不受限制么?
@wordpress建站吧 服务器25端口不给用,所以用的smtp去发的,各邮件服务商都有限制,比如腾讯一天500封