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 相关文章推荐
支持php4、php5的mysql数据库操作类
Jan 10 PHP
PHP 读取文件内容代码(txt,js等)
Dec 06 PHP
php递归创建目录的方法
Feb 02 PHP
PHP内核探索:哈希表碰撞攻击原理
Jul 31 PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
Aug 17 PHP
php关闭warning问题的解决方法
May 17 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
Nov 04 PHP
PHP二维关联数组的遍历方式(实例讲解)
Oct 18 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
Nov 17 PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
Dec 25 PHP
PHP yield关键字功能与用法分析
Jan 03 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
Feb 23 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
用 PHP5 轻松解析 XML
2006/12/04 PHP
体育彩票排列三组选三算法分享
2014/03/07 PHP
windows7下php开发环境搭建图文教程
2015/01/06 PHP
PHP实用函数分享之去除多余的0
2015/02/06 PHP
JavaScript 事件冒泡简介及应用
2010/01/11 Javascript
this和执行上下文实现代码
2010/07/01 Javascript
JavaScript中“基本类型”之争小结
2013/01/03 Javascript
jQuery中dequeue()方法用法实例
2014/12/29 Javascript
jquery动态导航插件dynamicNav用法实例分析
2015/09/06 Javascript
浅谈javascript中的三种弹窗
2016/10/21 Javascript
NodeJS仿WebApi路由示例
2017/02/28 NodeJs
vue过渡和animate.css结合使用详解
2017/06/14 Javascript
使用watch监听路由变化和watch监听对象的实例
2018/02/24 Javascript
vue iView 上传组件之手动上传功能
2018/03/16 Javascript
vue下拉菜单组件(含搜索)的实现代码
2018/11/25 Javascript
深入了解Vue3模板编译原理
2020/11/19 Vue.js
[00:21]DOTA2亚洲邀请赛 Logo演绎
2015/02/07 DOTA
[51:20]完美世界DOTA2联赛PWL S2 Magma vs PXG 第一场 11.28
2020/12/01 DOTA
基于Python实现通过微信搜索功能查看谁把你删除了
2016/01/27 Python
Python DataFrame设置/更改列表字段/元素类型的方法
2018/06/09 Python
数组保存为txt, npy, csv 文件, 数组遍历enumerate的方法
2018/07/09 Python
利用Python正则表达式过滤敏感词的方法
2019/01/21 Python
Python+OpenCv制作证件图片生成器的操作方法
2019/08/21 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
2019/10/11 Python
python写一个随机点名软件的实例
2019/11/28 Python
将pytorch转成longtensor的简单方法
2020/02/18 Python
如何使用localstorage代替cookie实现跨域共享数据问题
2018/04/18 HTML / CSS
Nike瑞典官方网站:Nike.com (SE)
2018/11/26 全球购物
Opodo意大利:欧洲市场上领先的在线旅行社
2019/10/24 全球购物
新春寄语大全
2014/04/09 职场文书
2014年村计划生育工作总结
2014/11/14 职场文书
党支部工作总结2015
2015/04/01 职场文书
党员理论学习心得体会
2016/01/21 职场文书
党员反四风学习心得体会
2016/01/22 职场文书
css3实现背景图片半透明内容不透明的方法示例
2021/04/13 HTML / CSS
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
2022/04/24 Vue.js