绝大部分的邮件追踪的方法都是利用一个动态链接在展示图片的时候同时进行一些动态运算. 以下代码以php为例子,利用php代码生成一张非常小的图片.我们之后要把这个链接放入邮件的在线图片链接中!
???<?php?
????????
????????$im?=?imagecreatetruecolor(1,?1);
????????$text_color?=?imagecolorallocate($im,?233,?14,?91);
????????imagestring($im,?1,?5,?5,??'A?Simple?Text?String',?$text_color);
????????//?设置内容类型标头?——?这个例子里是?image/jpeg
????????header('Content-Type:?image/jpeg');
????????//?输出图像
????????imagejpeg($im);
????????//?释放内存
????????imagedestroy($im);
????>
一般在邮件打开之后,图片会自动加载,加载的时候我们就可以记录打开行为了.
每个链接都必须不一样,以php为例子,可以在每个链接后面设置一个变量,这样就 可以把链接和每一个用户区分开来进行记录!
<?php?
????//我们可以先设置一个Get的变量,这样可以对每个不同的链接进行记录
????if(isset($_GET['mail'])){
??????$key=?htmlspecialchars($_GET['mail']);
????}
???
????//以下两行一个获取设备型号,另外一个获取ip地址
????$agent=$_SERVER['HTTP_USER_AGENT'];
????$ip?=?$_SERVER['REMOTE_ADDR'];
????//Option1:这里可以设置一个数据库链接
????$conn?=?new?mysqli($servername,?$username,?$password,?$dbname);
????if?($conn->connect_error){
????????die("连接失败:?"?.?$conn->connect_error);
????}?
????//Option2:如果不设置数据库还可以用一个txt文件来记录
????$myfile?=?fopen("feed.txt",?"a+")?or?die("Unable?to?open?file!");
????fwrite($myfile,?$rich);
????fclose($myfile);
????//经过如上的记录之后,我们就可以做接下来的动作来把这张1*1大小的图片展示出来
????>
???<?php?
????????
????????$im?=?imagecreatetruecolor(120,?20);
????????$text_color?=?imagecolorallocate($im,?233,?14,?91);
????????imagestring($im,?1,?5,?5,??'A?Simple?Text?String',?$text_color);
????????header('Content-Type:?image/jpeg');
????????imagejpeg($im);
????????imagedestroy($im);
????>
其实也可以通过https://grabify.icu生成类似的链接放入邮件之中.
|