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 相关文章推荐
PHP5在Apache下的两种模式的安装
Sep 05 PHP
PHP 和 MySQL 基础教程(一)
Oct 09 PHP
PHP通用分页类page.php[仿google分页]
Aug 31 PHP
简单的php 验证图片生成函数
May 21 PHP
PHP 5.3新特性命名空间规则解析及高级功能
Mar 11 PHP
QueryPath PHP 中的jQuery
Apr 11 PHP
晋城吧对DiscuzX进行的前端优化要点
Sep 05 PHP
解析wamp5下虚拟机配置文档
Jun 27 PHP
php 三元运算符实例详细介绍
Dec 15 PHP
深入浅析PHP的session反序列化漏洞问题
Jun 15 PHP
php面向对象基础详解【星际争霸游戏案例】
Jan 23 PHP
Yii 框架入口脚本示例分析
May 19 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
利用discuz自带通行证整合dedecms的方法以及文件下载
2007/03/06 PHP
关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表描述是乱码的情况
2013/01/06 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
通过PHP设置BugFree获取邮箱通知
2019/04/25 PHP
推荐dojo学习笔记
2007/03/24 Javascript
Js基础学习资料
2010/11/23 Javascript
调试Node.JS的辅助工具(NodeWatcher)
2012/01/04 Javascript
jQuery瀑布流插件Wookmark使用实例
2014/04/02 Javascript
js使用split函数按照多个字符对字符串进行分割的方法
2015/03/20 Javascript
JavaScript中ES6 Babel正确安装过程
2016/07/18 Javascript
前端js弹出框组件使用方法
2020/08/24 Javascript
简单实现AngularJS轮播图效果
2020/04/10 Javascript
JS实现关键词高亮显示正则匹配
2018/06/22 Javascript
微信小程序使用wxParse解析html的实现示例
2018/08/30 Javascript
vue简单练习 桌面时钟的实现代码实例
2019/09/19 Javascript
JS+CSS实现随机点名(实例代码)
2019/11/04 Javascript
python 运算符 供重载参考
2009/06/11 Python
python网络编程实例简析
2014/09/26 Python
Python简单实现子网掩码转换的方法
2016/04/13 Python
python基础教程之五种数据类型详解
2017/01/12 Python
用python生成1000个txt文件的方法
2018/10/25 Python
python读取图片的方式,以及将图片以三维数组的形式输出方法
2019/07/03 Python
django的model操作汇整详解
2019/07/26 Python
python对Excel按条件进行内容补充(推荐)
2019/11/24 Python
使用 Python 处理3万多条数据只要几秒钟
2020/01/19 Python
学习Python爬虫的几点建议
2020/08/05 Python
python MD5加密的示例
2020/10/19 Python
利用python+ffmpeg合并B站视频及格式转换的实例代码
2020/11/24 Python
ZWILLING双立人英国网上商店:德国刀具锅具厨具品牌
2018/05/15 全球购物
合同专员岗位职责
2013/12/18 职场文书
母亲追悼会答谢词
2014/01/27 职场文书
公司承诺书范文
2014/05/19 职场文书
学生会个人总结范文
2015/02/15 职场文书
2015年物业管理工作总结
2015/04/23 职场文书
2019年让高校“心动”的自荐信
2019/03/25 职场文书
星际争霸:毕姥爷vs解冻03
2022/04/01 星际争霸