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 相关文章推荐
Windows IIS PHP 5.2 安装与配置方法
Jun 08 PHP
php与php MySQL 之间的关系
Jul 17 PHP
php 取得瑞年与平年的天数的代码
Aug 10 PHP
PHP 数组和字符串互相转换实现方法
Mar 26 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
Jan 30 PHP
PHP实现CSV文件的导入和导出类
Mar 24 PHP
PHP微信开发之二维码生成类
Jun 26 PHP
PHP中使用foreach()遍历二维数组的简单实例
Jun 13 PHP
php安装ssh2扩展的方法【Linux平台】
Jul 20 PHP
PHP封装的XML简单操作类完整实例
Nov 13 PHP
PHP ADODB实现事务处理功能示例
May 25 PHP
laravel实现前后台路由分离的方法
Oct 13 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
php编程实现获取excel文档内容的代码实例
2011/06/28 PHP
php牛逼的面试题分享
2013/01/18 PHP
解析yahoo邮件用phpmailer发送的实例
2013/06/24 PHP
用 Composer构建自己的 PHP 框架之基础准备
2014/10/30 PHP
通过源码解析Laravel的依赖注入
2018/01/22 PHP
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
2013/10/11 Javascript
node.js中的fs.write方法使用说明
2014/12/15 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
2015/09/04 Javascript
深入理解jQuery事件绑定
2016/06/02 Javascript
javascript 闭包详解及简单实例应用
2016/12/31 Javascript
js实现横向拖拽导航条功能
2017/02/17 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
2017/04/29 Javascript
JS作用域链详解
2017/06/26 Javascript
vue-router 导航钩子的具体使用方法
2017/08/31 Javascript
手把手教你使用vue-cli脚手架(图文解析)
2017/11/08 Javascript
vuedraggable+element ui实现页面控件拖拽排序效果
2020/07/29 Javascript
js实现页面图片消除效果
2020/03/24 Javascript
[36:09]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
跟老齐学Python之Python文档
2014/10/10 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
2018/06/04 Python
python版DDOS攻击脚本
2019/06/12 Python
python启动应用程序和终止应用程序的方法
2019/06/28 Python
python提取xml里面的链接源码详解
2019/10/15 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
2020/06/28 Python
Sublime Text3最新激活注册码分享适用2020最新版 亲测可用
2020/11/12 Python
Html5游戏开发之乒乓Ping Pong游戏示例(二)
2013/01/21 HTML / CSS
Guess欧洲官网:美国服饰品牌
2019/08/06 全球购物
将一个数的从第5位开始的7个数取出,其余位置0
2016/05/26 面试题
毕业实习评语
2014/02/10 职场文书
《可爱的动物》教学反思
2014/02/22 职场文书
建设投标担保书
2014/05/13 职场文书
贷款承诺书范文
2014/05/19 职场文书
2014年十一国庆节活动方案
2014/09/16 职场文书
自我工作评价范文
2015/03/06 职场文书
同事离别感言
2015/08/04 职场文书
「租借女友」第2季樱泽墨角色PV&新视觉图公开
2022/03/21 日漫