首頁 php教程 php手册 PHP电子邮件追踪系统

PHP电子邮件追踪系统

Jul 11, 2016 pm 08:00 PM
php 程式碼 開源 系統 程式設計 程式設計語言 軟體開發

  由于自己最近正在找工作,发求职信和简历时想知道对方是否已经看过自己的求职信。后来找到了www.spypig.com,它可以在收信人每次查看你的邮件时发送Email通知你邮件已经被查看过了,并记录查看的次数。使用过程中发现,它的实现原理还很简单,所以就用PHP照着葫芦画瓢自己写了个。

概述

  当你想知道自己发送的邮件是否被收信人查看过时,使用电子邮件追踪系统(Email Tracking System)就可以帮助你。

使用方法

   打开链接电子邮件追踪系统,输入Email地址和标题,选择接收通知的次数,然后激活获取Tracking Image,在一分钟内将其复制到你的Email邮件正文中,再正常发送邮件就行了。

实现原理

  由于PHP电子邮件追踪系统标签的src属性会主动引入外部文件,所以将调用“tracker程序”(此程序会正常输出一张图片)的URL作为src的值,并将此PHP电子邮件追踪系统放入邮件正文中与之一起发送出去。这样,每当收信人打开该邮件显示该PHP电子邮件追踪系统时,都会调用“tracker程序”,这时“tracker程序”会发送email通知你。而邮件也必须是HTML格式的才行。

程序说明

  程序共有四部分:

  • index.html -- 创建一个Email Tracker的程序界面,需要传递三个参数 - 邮件地址,标题和接收通知的次数。
  • tracker.php -- 接收参数产生一个Email Tracker。
  • blank.php -- 发送Email通知用户邮件已阅,并生成一个图片。
  • msg_template.html -- 通知正文的模板。

 代码

  创建表的SQL:

PHP电子邮件追踪系统PHP电子邮件追踪系统email_tracker SQL

 

   tracker.php接收参数产生一个新的Email Tracker:

PHP电子邮件追踪系统PHP电子邮件追踪系统tracker.php
$db = get_db();
$ip = $_SERVER['REMOTE_ADDR']?$_SERVER['REMOTE_ADDR']:'127.0.0.1'//获取用户IP
$unique_id = get_unique_id($ip);    // 产生一个唯一ID
$number    = intval($_POST['number']);
$email     = trim($_POST['email']);
$title     = trim($_POST['title']);
$sent_time = time();    // 作为发送邮件的时间
$db->query("INSERT INTO `email_tracker` (unique_id, email, title, number, ip, sent_time) VALUES ('$unique_id', '$email', '$title', $number, '$ip', '$sent_time')");

 

   用于产生唯一ID的get_unique_id函数:

PHP电子邮件追踪系统PHP电子邮件追踪系统get_unique_id

 

  blank.php由邮件正文中Tracking Image调用,发送Email通知用户邮件已阅,并生成一个图片。

PHP电子邮件追踪系统PHP电子邮件追踪系统blank.php
if(!($unique_id = trim($_SERVER['QUERY_STRING']))) exit_with_image_blank();

$db = get_db();
$tracker = $db->fetch_one("SELECT * FROM `email_tracker` WHERE unique_id='$unique_id'");

// 记录不存在,或Tracking已经结束
if(empty($tracker&& $tracker['times'>= $tracker['number']) {
    
// 输出一个空白图片并退出
    exit_with_image_blank();
}
// 邮件发送时到现在经过的时间
$time_elapsed = time() - $tracker['sent_time'];
// 不到一分钟
if($time_elapsed  60) {
    
if($tracker['times' 0) { // 还未激活Email Tracker
        $db->query("UPDATE `email_tracker` SET times=0 WHERE unique_id='$unique_id'");
    }
    exit_with_image_blank();
}
// 一分钟之后,times
if($tracker['times' 0) {
    
$one_minute_ago = time() - 60;
    
// 删除所有经过一分钟还未激活的Email Tracker
    $db->query("DELETE FROM `email_tracker` WHERE times $one_minute_ago");//unique_id='$unique_id'
    exit_with_image_blank();
}
// 获取收信人IP
$rcpt_ip = $_SERVER['REMOTE_ADDR']?$_SERVER['REMOTE_ADDR']:'127.0.0.1';
if($rcpt_ip == $tracker['ip']) {
    
//与用户IP相同,也许是用户自己打开了Email
    $tracker['times']++;
else {
    
// 是收信人打开了Email, 查阅次数增加一次
    $tracker['times']++;
}

$db->query("UPDATE `email_tracker` SET times=$tracker[times] WHERE unique_id='$unique_id'");
if($tracker['times'>= $tracker['number']) {
    
// Tracking已经结束, 删除记录
    $db->query("DELETE FROM `email_tracker` WHERE unique_id='$unique_id'");
}
// 发送Email
send_mail('mailtracker0@gmail.com', $tracker['email'], array(
    
'subject' =>'Your email "'.$tracker['title'].'" has been read!',
    
'body'    =>notify_content($tracker, $rcpt_ip, $time_elapsed),
    
'headers' =>"MIME-Version: 1.0;\r\nContent-type:text/html; charset=\"utf-8\";\r\n",

    
'host'    =>'smtp.gmail.com',
    
'ssl'     =>true,
    
'port'    =>465,

    
'auth'    =>true,
    
'user'    =>'mailtracker0',
    
'pass'    =>'**********'
));
// 输出一个空白图片并退出
exit_with_image_blank();
 

 

  send_mail函数用于发送通知邮件:

PHP电子邮件追踪系统PHP电子邮件追踪系统send_mail
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

php程序在字符串中計數元音 php程序在字符串中計數元音 Feb 07, 2025 pm 12:12 PM

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

您如何在PHP中解析和處理HTML/XML? 您如何在PHP中解析和處理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? 什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? Apr 03, 2025 am 12:03 AM

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

PHP和Python:比較兩種流行的編程語言 PHP和Python:比較兩種流行的編程語言 Apr 14, 2025 am 12:13 AM

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

神秘的JavaScript:它的作用以及為什麼重要 神秘的JavaScript:它的作用以及為什麼重要 Apr 09, 2025 am 12:07 AM

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

什麼是跨站點偽造(CSRF),您如何在PHP中實施CSRF保護? 什麼是跨站點偽造(CSRF),您如何在PHP中實施CSRF保護? Apr 07, 2025 am 12:02 AM

在PHP中可以通過使用不可預測的令牌來有效防範CSRF攻擊。具體方法包括:1.生成並在表單中嵌入CSRF令牌;2.在處理請求時驗證令牌的有效性。

See all articles