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 相关文章推荐
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
Feb 22 PHP
php max_execution_time执行时间问题
Jul 17 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
Apr 10 PHP
php计算程序运行时间的简单例子分享
May 10 PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
Dec 21 PHP
php简单实现批量上传图片的方法
May 09 PHP
php禁用cookie后session设置方法分析
Oct 19 PHP
CI框架表单验证实例详解
Nov 21 PHP
详解PHP处理字符串类似indexof的方法函数
Jun 11 PHP
php常用的工具开发整理
Sep 26 PHP
PHP中isset、empty的用法与区别示例详解
Nov 05 PHP
PHP对接阿里云虚拟号的实现(号码隐私保护)
Apr 06 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生成文件
2007/01/15 PHP
用PHP实现图象锐化代码
2007/06/14 PHP
适用于php-5.2 的 php.ini 中文版[金步国翻译]
2011/04/17 PHP
Php中文件下载功能实现超详细流程分析
2012/06/13 PHP
JS模态窗口返回值兼容问题的完美解决方法
2016/05/28 Javascript
深入理解Ajax的get和post请求
2016/06/02 Javascript
基于gulp合并压缩Seajs模块的方式说明
2016/06/14 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
js实现做通讯录的索引滑动显示效果和滑动显示锚点效果
2017/02/18 Javascript
如何在基于vue-cli的项目自定义打包环境
2018/11/10 Javascript
javascript实现滚动条效果
2020/03/24 Javascript
[52:52]完美世界DOTA2联赛PWL S3 LBZS vs access 第一场 12.10
2020/12/13 DOTA
Python中使用pprint函数进行格式化输出的教程
2015/04/07 Python
Windows下安装python2和python3多版本教程
2017/03/30 Python
Python实现将Excel转换为json的方法示例
2017/08/05 Python
如何基于python测量代码运行时间
2019/12/25 Python
Pycharm中import torch报错的快速解决方法
2020/03/05 Python
在keras里面实现计算f1-score的代码
2020/06/15 Python
Python实现我的世界小游戏源代码
2021/03/02 Python
英国二手物品交易网站:Preloved
2017/10/06 全球购物
Madewell澳大利亚官方网站:美国休闲服饰品牌
2019/07/18 全球购物
会计专业毕业生自我评价
2013/09/25 职场文书
在职人员函授期间自我评价分享
2013/11/08 职场文书
经理职责范文
2013/11/08 职场文书
校三好学生主要事迹
2014/01/11 职场文书
简单的大学生自我鉴定
2014/02/18 职场文书
出生证明公证书
2014/04/09 职场文书
大学毕业典礼演讲稿
2014/09/09 职场文书
2014年绩效考核工作总结
2014/12/11 职场文书
2015会计试用期工作总结
2014/12/12 职场文书
安全员岗位职责
2015/02/10 职场文书
化妆品促销活动总结
2015/05/07 职场文书
2019年度政务公开考核工作总结模板
2019/11/11 职场文书
如何使用pdb进行Python调试
2021/06/30 Python
Python re.sub 反向引用的实现
2021/07/07 Python
Python多个MP4合成视频的实现方法
2021/07/16 Python