首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP怎么获取邮件是否已被查看阅读等信息

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

作者头像
沈唁
发布2019-05-22 15:14:21
1.5K0
发布2019-05-22 15:14:21
举报
文章被收录于专栏:沈唁志沈唁志

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

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

所以就需要一些小技巧,这里有个非常有趣的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:52o@qq52o.cn
* 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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-02-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 能干些什么?
  • 扩展
  • 用法
  • 代码
  • 原理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档