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将数据导入到Foxmail
Oct 09 PHP
PHP Pear 安装及使用
Mar 19 PHP
header跳转和include包含问题详解
Sep 08 PHP
ThinkPHP CURD方法之page方法详解
Jun 18 PHP
getJSON跨域SyntaxError问题分析
Aug 07 PHP
ThinkPHP做文字水印时提示call an undefined function exif_imagetype()解决方法
Oct 30 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
Nov 05 PHP
Smarty分页实现方法完整实例
May 11 PHP
PHP+Ajax异步带进度条上传文件实例
Nov 01 PHP
PHP中error_reporting函数用法详细介绍
Jun 11 PHP
php 处理png图片白色背景色改为透明色的实例代码
Dec 10 PHP
mac pecl 安装php7.1扩展教程
Oct 17 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/07/17 PHP
php preg_filter执行一个正则表达式搜索和替换
2012/02/27 PHP
PHP下打开phpMyAdmin出现403错误的问题解决方法
2013/05/23 PHP
php日历制作代码分享
2014/01/20 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
2015/12/25 PHP
php nginx 实时输出的简单实现方法
2018/01/21 PHP
一个加密JavaScript的开源工具PACKER2.0.2
2006/11/04 Javascript
JQuery Tab选项卡效果代码改进版
2010/04/01 Javascript
jquery简单的拖动效果实现原理及示例
2013/07/26 Javascript
用js正确判断用户名cookie是否存在的方法
2014/01/28 Javascript
JavaScript弹出新窗口并控制窗口移动到指定位置的方法
2015/04/06 Javascript
jQuery Html控件基本操作(日常收集整理)
2016/03/11 Javascript
浅析AngularJS中的指令
2016/03/20 Javascript
基于javascript实现表格的简单操作
2016/05/21 Javascript
jQuery页面元素动态添加后绑定事件丢失方法,非 live
2016/06/16 Javascript
Angular2开发——组件规划篇
2017/03/28 Javascript
jQuery.Sumoselect插件实现下拉复选框效果
2017/11/09 jQuery
微信小程序使用image组件显示图片的方法【附源码下载】
2017/12/08 Javascript
vue-auto-focus: 控制自动聚焦行为的 vue 指令方法
2018/08/25 Javascript
JavaScript 截取字符串代码实例
2019/09/05 Javascript
Threejs实现滴滴官网首页地球动画功能
2020/07/13 Javascript
微信小程序实现翻牌抽奖动画
2020/09/21 Javascript
Python Socket使用实例
2017/12/18 Python
浅谈django orm 优化
2018/08/18 Python
解决Python中list里的中文输出到html模板里的问题
2018/12/17 Python
Django Rest framework频率原理与限制
2019/07/26 Python
python 定时器每天就执行一次的实现代码
2019/08/14 Python
Python实现栈和队列的简单操作方法示例
2019/11/29 Python
使用pyshp包进行shapefile文件修改的例子
2019/12/06 Python
Python实现子类调用父类的初始化实例
2020/03/12 Python
英国最大的专业户外零售商:Mountain Warehouse
2018/06/06 全球购物
如何减少垃圾回收让内存更加有效使用
2013/10/18 面试题
森林防火工作方案
2014/02/14 职场文书
保研推荐信格式
2015/03/25 职场文书
2015年行政助理工作总结
2015/04/30 职场文书
朝花夕拾读书笔记
2015/06/29 职场文书