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学习之php4与php5之间会穿梭一点点感悟
May 03 PHP
php radio 单选框获取与保持值的实现代码
May 15 PHP
JS 网站性能优化笔记
May 24 PHP
PHP 防注入函数(格式化数据)
Aug 08 PHP
第二章 PHP入门基础之php代码写法
Dec 30 PHP
解析PHP自带的进位制之间的转换函数
Jun 08 PHP
eaglephp使用微信api接口开发微信框架
Jan 09 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
Feb 15 PHP
PHP中类的自动加载的方法
Mar 17 PHP
PHP实现找出链表中环的入口节点
Jan 16 PHP
PHP实现的支付宝支付功能示例
Mar 26 PHP
PHP使用Http Post请求发送Json对象数据代码解析
Jul 16 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时间类完整实例(非常实用)
2015/12/25 PHP
PHP导出带样式的Excel示例代码
2016/08/28 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
2016/12/29 PHP
通过PHP设置BugFree获取邮箱通知
2019/04/25 PHP
javascript 字符串连接的性能问题(多浏览器)
2008/11/18 Javascript
表单切换,用回车键替换Tab健(不支持IE)
2011/07/20 Javascript
js实现上传图片之上传前预览图片
2013/03/25 Javascript
JS实现仿百度输入框自动匹配功能的示例代码
2014/02/19 Javascript
js不能获取隐藏的div的宽度只能先显示后获取
2014/09/04 Javascript
浅谈Sizzle的“编译原理”
2015/04/14 Javascript
JavaScript操作class和style样式代码详解
2016/02/13 Javascript
JavaScript中this的用法实例分析
2016/12/19 Javascript
js实现数组和对象的深浅拷贝
2017/09/30 Javascript
react 兄弟组件如何调用对方的方法示例
2018/10/23 Javascript
基于vue 实现表单中password输入的显示与隐藏功能
2019/07/19 Javascript
微信小程序之数据绑定原理解析
2019/08/14 Javascript
python服务器与android客户端socket通信实例
2014/11/12 Python
利用Python实现颜色色值转换的小工具
2016/10/27 Python
详解python3实现的web端json通信协议
2016/12/29 Python
python实时获取外部程序输出结果的方法
2019/01/12 Python
python学生信息管理系统实现代码
2019/12/17 Python
浅谈python累加求和+奇偶数求和_break_continue
2020/02/25 Python
基于python实现获取网页图片过程解析
2020/05/11 Python
解决启动django,浏览器显示“服务器拒绝访问”的问题
2020/05/13 Python
python+playwright微软自动化工具的使用
2021/02/02 Python
CSS3 @keyframes简单动画实现
2018/02/24 HTML / CSS
Ray-Ban雷朋西班牙官网:全球领先的太阳眼镜品牌
2018/11/28 全球购物
流行文化收藏品:Sideshow(DC漫画,星球大战,漫威)
2019/03/17 全球购物
美国家居装饰店:Pier 1
2019/09/04 全球购物
幼儿园保教管理制度
2014/02/03 职场文书
小学生学雷锋演讲稿
2014/04/25 职场文书
秋季运动会演讲稿
2014/09/16 职场文书
单位工作证明书格式
2014/10/04 职场文书
2015年感恩母亲节活动方案
2015/05/04 职场文书
导游词之张家口
2019/12/13 职场文书