phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法


Posted in PHP onJuly 19, 2014

很多人在使用phpmailer发送邮件之后,都想知道对方是否阅读了邮件?通常来说,这个我们是无法知道的,那么有没有办法呢?

对于这个问题有一个简单的解决方法,我们知道,邮件内容可以以html 的形式发送,我们可以在内容中插入图片,那么关键就在这个图片里面了。

假设我们的邮件内容是这样的:

文件content.php代码如下:

<table width="555" height="50" border="0" align="center" cellpadding="0" cellspacing="0" background="<?=$bg?>">
<tr>
 <td>这是测试内容</td>
   </tr>
   <tr>
 <td> </td>
   </tr>
   <tr>
 <td> </td>
   </tr>
 </table>

这个$bg要怎么写呢?如果邮件是发送多个人呢?这里又怎么区分呢?

假设链接是这样的:http://www.xxx.com/image.php?email=$email 再看看image.php的代码

文件image.php代码如下:

<?php 
$email=$_GET["email"]; 
if($id) 
{ 
  include_once("/conn.php"); 
  mysql_query("update mail_list set has_read='yes' where email='$email'"); 
} 
header("Content/type:image/gif"); 
$im=imagecreatefromgif("bg.gif"); 
imagegif($im); 
imagedestroy($im); 
?>

看到这里你也许就明白了。所以我发送的邮件的内容就是这样的:

<?php 
ob_start(); 
include_once("content.php"); 
$content=ob_get_contents(); 
ob_end_clean(); 
?>

写到这里,我们并没有对邮件内容中的背景图像进行替换,接下来的问题将会逐步解决这个问题, 这个是用phpmail发送邮件的部分代码:

<?php 
/* 
$contact=array("userA"=>"aaaa@sina.com","userB""=>"bbb@163.com","userC"=>"ccc@qq.com"); 
*/ 
foreach ($contact as $unm=>$email) 
{ 
  $bg_file="http://{$_SERVER['SERVER_NAME']}/image.php?email=$email"; 
  $str=str_replace('background=""',"background=\"$bg_file\"",$content); 
  $mail->MsgHTML($str); 
  $mail->AddAddress($email,$unm); 
  $mail->Send(); 
} 
?>

这里为什么要用循环的方式逐一发送呢?因为为了区分是哪个联系人读过邮件,每封邮件的内容的背景图片的显示不一样。在发送之前,我们对内容进行处理,对背景进行替换,这样我们看到的邮件内容的背景图像的src就变成了这样:http://www.domain.com/image.php?email=aaa@sina.com等等。

注意这里还有一个问题,你执行上面的代码之后,会发现一个问题,发送到第一个人的是3封,第二个人的是2封,第三个人的是1封,这里为什么呢?这里就要看看AddAddress方法了。修改办法是:打开class.phpmailer.php,找到310行,将private $to=Array()改成public $to=Array().

然后在发送邮件的代码中加入:

$mail->to=Array();
$mail->AddAddress($email,$unm);

写到这里,就不用再做过多说明了。

PHP 相关文章推荐
php中实现记住密码自动登录的代码
Mar 02 PHP
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
Mar 27 PHP
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
Jun 13 PHP
关于url地址传参数时字符串有回车造成页面脚本赋值失败的解决方法
Jun 28 PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
Dec 22 PHP
php文件上传简单实现方法
Jan 24 PHP
php数组添加与删除单元的常用函数实例分析
Feb 16 PHP
PHP附件下载中文名称乱码的解决方法
Dec 17 PHP
PHP版本常用的排序算法汇总
Dec 20 PHP
PHP实现的曲线统计图表示例
Nov 10 PHP
php连接微软MSSQL(sql server)完全攻略
Nov 27 PHP
PHP 超级全局变量相关总结
Jun 30 PHP
完善CodeIgniter在IDE中代码提示功能的方法
Jul 19 #PHP
CodeIgniter中实现泛域名解析
Jul 19 #PHP
php实现建立多层级目录的方法
Jul 19 #PHP
PHP实现图片压缩的两则实例
Jul 19 #PHP
PHP简单实现“相关文章推荐”功能的方法
Jul 19 #PHP
php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
Jul 18 #PHP
CodeIgniter中使用cookie的三种方式详解
Jul 18 #PHP
You might like
全国FM电台频率大全 - 12 安徽省
2020/03/11 无线电
浅析iis7.5安装配置php环境
2015/05/10 PHP
Yii2 assets清除缓存的方法
2016/05/16 PHP
thinkPHP5 ACL用户权限模块用法详解
2017/05/10 PHP
实现laravel 插入操作日志到数据库的方法
2019/10/11 PHP
Yii框架的redis命令使用方法简单示例
2019/10/15 PHP
国外Lightbox v2.03.3 最新版 下载
2007/10/17 Javascript
有关DOM元素与事件的3个谜题
2010/11/11 Javascript
重载toString实现JS HashMap分析
2011/03/13 Javascript
javascript ajax 仿百度分页函数
2013/10/29 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
2013/11/19 Javascript
jquery实现在页面加载的时自动为日期插件添加当前日期
2014/08/20 Javascript
JavaScript italics方法入门实例(把字符串显示为斜体)
2014/10/17 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
Jquery遍历Json数据的方法
2015/04/20 Javascript
js/jquery判断浏览器类型的方法小结
2015/05/12 Javascript
js的flv视频播放器插件使用方法
2015/06/23 Javascript
json的结构与遍历方法实例分析
2017/04/25 Javascript
微信小程序 自动登陆PHP源码实例(源码下载)
2017/05/08 Javascript
JS轮播图实现简单代码
2021/02/19 Javascript
vue中使用v-model完成组件间的通信
2019/08/22 Javascript
vue在App.vue文件中监听路由变化刷新页面操作
2020/08/14 Javascript
Python每天必学之bytes字节
2016/01/28 Python
浅谈Python traceback的优雅处理
2018/08/31 Python
python3.x实现base64加密和解密
2019/03/28 Python
OpenCV-Python 摄像头实时检测人脸代码实例
2019/04/30 Python
python+openCV调用摄像头拍摄和处理图片的实现
2019/08/06 Python
详解python命令提示符窗口下如何运行python脚本
2020/09/11 Python
Python加载数据的5种不同方式(收藏)
2020/11/13 Python
入党自我鉴定范文
2013/10/04 职场文书
先进事迹报告会感言
2014/01/24 职场文书
五分钟演讲稿
2014/04/30 职场文书
法制演讲稿
2014/09/10 职场文书
2015年药店工作总结
2015/04/20 职场文书
2016年小学教师师德承诺书
2016/03/25 职场文书
python神经网络学习 使用Keras进行简单分类
2022/05/04 Python