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 相关文章推荐
模仿OSO的论坛(二)
Oct 09 PHP
php汉字转拼音的示例
Feb 27 PHP
php socket客户端及服务器端应用实例
Jul 04 PHP
php查询相似度最高的字符串的方法
Mar 12 PHP
使用纯php代码实现页面伪静态的方法
Jul 25 PHP
使用PHP接受文件并获得其后缀名的方法
Aug 05 PHP
php根据日期或时间戳获取星座信息和生肖等信息
Oct 20 PHP
php打乱数组二维数组多维数组的简单实例
Jun 17 PHP
thinkPHP模板中函数的使用方法示例
Nov 30 PHP
php防止sql注入的方法详解
Feb 20 PHP
PHP实现上传多文件示例代码
Feb 20 PHP
tp5.1 框架join方法用法实例分析
May 26 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
Sublime里直接运行PHP配置方法
2014/11/28 PHP
10个简化PHP开发的工具
2014/12/25 PHP
php计算两个整数的最大公约数常用算法小结
2015/03/05 PHP
WordPress网站性能优化指南
2015/11/18 PHP
PHP判断密码强度的方法详解
2017/05/26 PHP
Thinkphp 框架配置操作之配置加载与读取配置实例分析
2020/05/15 PHP
在页面上点击任一链接时触发一个事件的代码
2007/04/07 Javascript
js操作ajax返回的json的注意问题!
2010/02/23 Javascript
关于jquery css的使用介绍
2013/04/18 Javascript
js Math 对象的方法
2013/09/01 Javascript
javascript放大镜效果的简单实现
2013/12/09 Javascript
jQuery is()函数用法3例
2014/05/06 Javascript
浅谈JavaScript 执行环境、作用域及垃圾回收
2016/05/31 Javascript
jQuery插件dataTables添加序号列的方法
2016/07/06 Javascript
浅谈js数据类型判断与数组判断
2016/08/29 Javascript
ES6实现的遍历目录函数示例
2017/04/07 Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
2018/06/30 Javascript
javascript/jquery实现点击触发事件的方法分析
2019/11/11 jQuery
python提示No module named images的解决方法
2014/09/29 Python
使用Python的Tornado框架实现一个一对一聊天的程序
2015/04/25 Python
Python中生成Epoch的方法
2017/04/26 Python
教你用一行Python代码实现并行任务(附代码)
2018/02/02 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
Python批量删除只保留最近几天table的代码实例
2019/04/01 Python
如何使用python3获取当前路径及os.path.dirname的使用
2019/12/13 Python
使用Python通过oBIX协议访问Niagara数据的示例
2020/12/04 Python
python爬虫scrapy基本使用超详细教程
2021/02/20 Python
很酷的HTML5电子书翻页动画特效
2016/02/25 HTML / CSS
“型”走纽约上东区:Sam Edelman
2017/04/02 全球购物
Perfume’s Club意大利官网:欧洲美妆电商
2019/05/03 全球购物
大学本科毕业生的自我鉴定范文
2013/11/19 职场文书
留学自荐信写作方法
2014/01/27 职场文书
2014年施工员工作总结
2014/11/18 职场文书
搞笑的婚礼主持词
2015/06/29 职场文书
《中国机长》观后感:敬畏生命,敬畏职责
2019/11/12 职场文书
Golang 语言控制并发 Goroutine的方法
2021/06/30 Golang