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 相关文章推荐
一个图形显示IP的PHP程序代码
Oct 19 PHP
PHP与MySQL开发的8个技巧小结
Dec 17 PHP
pdo中使用参数化查询sql
Aug 11 PHP
str_replace只替换一次字符串的方法
Apr 09 PHP
php GUID生成函数和类
Mar 10 PHP
百度地图API应用之获取用户的具体位置
Jun 10 PHP
Laravel框架数据库CURD操作、连贯操作总结
Sep 03 PHP
利用“多说”制作留言板、评论系统
Jul 14 PHP
浅谈php的优缺点
Jul 14 PHP
详解Laravel视图间共享数据与视图Composer
Aug 04 PHP
PHP常见数组排序方法小结
Aug 20 PHP
PHP高并发和大流量解决方案整理
Dec 24 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 无极分类(递归)实现代码
2010/01/05 PHP
php生成二维码
2015/08/10 PHP
jquery tools 系列 scrollable学习
2009/09/06 Javascript
关于火狐(firefox)及ie下event获取的两种方法
2012/12/27 Javascript
javascript中的document.open()方法使用介绍
2013/10/09 Javascript
给js文件传参数(详解)
2014/07/13 Javascript
JavaScript和JQuery获取DIV值的方法示例
2017/03/07 Javascript
浅谈Node Inspector 代理实现
2017/10/19 Javascript
详解Vue中localstorage和sessionstorage的使用
2017/12/22 Javascript
如何使用VuePress搭建一个类型element ui文档
2019/02/14 Javascript
微信小程序开发之左右分栏效果的实例代码
2019/05/20 Javascript
Vue.js自定义指令学习使用详解
2019/10/19 Javascript
在vue中配置不同的代理同时访问不同的后台操作
2020/09/11 Javascript
微信小程序实现翻牌抽奖动画
2020/09/21 Javascript
vue使用exif获取图片旋转,压缩的示例代码
2020/12/11 Vue.js
Nodejs实现微信分账的示例代码
2021/01/19 NodeJs
[56:46]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VP vs Effect
2018/04/01 DOTA
python+mysql实现简单的web程序
2014/09/11 Python
设计模式中的原型模式在Python程序中的应用示例
2016/03/02 Python
python基础while循环及if判断的实例讲解
2017/08/25 Python
python 读取视频,处理后,实时计算帧数fps的方法
2018/07/10 Python
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
python 实现矩阵上下/左右翻转,转置的示例
2019/01/23 Python
python爬虫之遍历单个域名
2019/11/20 Python
快速查找Python安装路径方法
2020/02/06 Python
基于keras中的回调函数用法说明
2020/06/17 Python
Python json格式化打印实现过程解析
2020/07/21 Python
AmazeUI 输入框组的示例代码
2020/08/14 HTML / CSS
公司拓展活动方案
2014/02/13 职场文书
教育英语专业毕业生的求职信
2014/03/13 职场文书
机械设计及其自动化专业求职信
2014/06/09 职场文书
2015年感恩母亲节的演讲稿
2015/03/18 职场文书
办公室岗位职责范本
2015/04/11 职场文书
欠款证明
2015/06/24 职场文书
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
2021/04/17 Vue.js
Windows Server 修改远程桌面端口的实现
2022/06/25 Servers