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 图像函数大举例(非原创)
Jun 20 PHP
PHP 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
Apr 09 PHP
PHP调用JAVA的WebService简单实例
Mar 11 PHP
PHP生成不重复标识符的方法
Nov 21 PHP
ThinkPHP模版中导入CSS和JS文件的方法
Nov 29 PHP
PHP中foreach()用法汇总
Jul 02 PHP
Thinkphp实现自动验证和自动完成
Dec 19 PHP
php使用Jpgraph创建折线图效果示例
Feb 15 PHP
PHP实现随机生成水印图片功能
Mar 22 PHP
PHP以json或xml格式返回请求数据的方法
May 31 PHP
php中对象引用和复制实例分析
Aug 14 PHP
分享8个Laravel模型时间戳使用技巧小结
Feb 12 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制作静态网站的模板框架(二)
2006/10/09 PHP
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
2012/05/07 PHP
Yii2使用表单上传文件的实例代码
2017/08/03 PHP
实现php删除链表中重复的结点
2018/09/27 PHP
Js 随机数产生6位数字
2010/05/13 Javascript
JQuery判断radio是否选中并获取选中值的示例代码
2014/10/17 Javascript
javascript正则表达式中的replace方法详解
2015/04/20 Javascript
用Node.js通过sitemap.xml批量抓取美女图片
2015/05/28 Javascript
jQuery实现返回顶部功能
2016/02/23 Javascript
Bootstrap模仿起筷首页效果
2016/05/09 Javascript
深入理解JS继承和原型链的问题
2016/12/17 Javascript
JavaScript中Math对象的方法介绍
2017/01/05 Javascript
深入理解vue2.0路由如何配置问题
2017/07/18 Javascript
node+koa实现数据mock接口的方法
2017/09/20 Javascript
JS与CSS3实现图片响应鼠标移动放大效果示例
2018/05/04 Javascript
微信小程序封装的HTTP请求示例【附升级版】
2019/05/11 Javascript
解决layui的使用以及针对select、radio等表单组件不显示的问题
2019/09/05 Javascript
go和python调用其它程序并得到程序输出
2014/02/10 Python
python服务器与android客户端socket通信实例
2014/11/12 Python
在Linux上安装Python的Flask框架和创建第一个app实例的教程
2015/03/30 Python
Python列出一个文件夹及其子目录的所有文件
2016/06/30 Python
import的本质解析
2017/10/30 Python
python pandas 对时间序列文件处理的实例
2018/06/22 Python
python实现电子词典
2020/03/03 Python
Hello Molly美国:女性时尚在线
2019/08/26 全球购物
美国在线医疗分销商:MedEx Supply
2020/02/04 全球购物
后勤采购员岗位职责
2013/12/19 职场文书
运动会邀请函范文
2014/02/06 职场文书
信息科学与技术专业求职信范文
2014/02/20 职场文书
大班幼儿评语大全
2014/04/30 职场文书
领导干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2014年实习班主任工作总结
2014/11/08 职场文书
乡镇一岗双责责任书
2015/01/29 职场文书
MySQL数据库超时设置配置的方法实例
2021/10/15 MySQL
SQL Server2019数据库备份与还原脚本,数据库可批量备份
2021/11/20 SQL Server
Mysql InnoDB 的内存逻辑架构
2022/05/06 MySQL