跳到主要內容

EDM發信統計方案

發送EDM時,我們總會想知道到底有多少人開啟信件,這封信件內容被閱讀了幾次?
如果能在信件內容中藏一個連結,每當開啟信箱即可自動提出要求告訴後端站台我正在閱覧此封EDM。
如何達到『自動提出要求告訴後端站台我正在閱覧此封EDM』?
這個連結需包含了EDM id 及Email地址,這個連結可能會長成這樣子:
https://www.xxxx.com/countedm.php?edmid=EDM編號&email=開信email地址
自動提出要求這件事可以透過產生圖片來達成。
只要在EDM內容尾端加入<img src="https://www.xxxx.com/countedm.php?edmid=EDM編號&email=開信email地址" />即可。
countedm.php程式內容只要產出一張很小很小的圖片就好。而後面的傳遞參數就用來紀錄統計開信數量的資訊。

PHP產生圖片方式。
1. php需支援GD 2.1以上的函式庫。
2. countedm.php輸出內容為
    header("Pragma: no-cache");
    header("content-type:image/png");
    header('Cache-control: no-cache, no-store');
    $im = imagecreate(1, 1); // 單純輸出 1PX 的圖
    $bg_color = imagecolorallocate($im, 255, 255, 255); // 圖片配色為白色
    imagefill($im, 0, 0, $bg_color);
    imagepng($im);  // 輸出圖片
    imagedestroy($im);  // 銷毀圖片,別讓圖片佔去server內的資源。

紀錄開信表格(edmopencount)
    edmid  EDM編號(pk)
    email  寄信地址(pk)
    sendstatus  寄信狀態(0:待寄;1:已寄)
    senddatetime  寄信時間
    opendatetime  開信時間
    lastopendatetime  最後開信時間
    opencount  開信次數

記錄表格程式流程
1. 以連結傳遞資訊為條件,查詢edmopencount資料表,是否有資料。
2. 若無資料則新增資料
    sendstatus=1
    senddatetime=now()
    opendatetime=now()
    opencount=1
3. 若有資料則判斷opendatetime是否有值?
    有 update edmopencount set lastopendatetime=new(), opencount=opencount+1 where edmid=EDM編號 and email=開信email地址
    否 update edmopencount set opendatetime=new(), opencount=1 where edmid=EDM編號 and email=開信email地址

統計報表即可產出
寄信數量
開信人次
開信總數

 

留言

這個網誌中的熱門文章

CentOS 7 + PHP 7 無法上傳檔案

下以動作請使用root權限控制,確保指令可以正確運作。 查看 vi /etc/php.ini ;;;;;;;;;;;;;;;;;;;;;; ; File Uploads ; ;;;;;;;;;;;;;;;;;;;;;; ; Whether to allow HTTP file uploads. ; http://php.net/file-uploads file_uploads = On ; Temporary directory for HTTP uploaded files (will use system default if not ; specified). ; http://php.net/upload-tmp-dir ; upload_tmp_dir = ; Maximum allowed size for uploaded files. ; http://php.net/upload-max-filesize upload_max_filesize = 2M 此設定說明,上傳檔案時,會先將檔案存放在預設/tmp 資料夾。 查看 /tmp 的權限應該為 drwxrwxrwt. 10 root root tmp 再往下檢查 /tmp下的檔案權限 ls /tmp -all drwx------. 3 root root systemd-private-xxxxx-httpd.service-xxxxxx 將其擁有者修改為apache chown -R apache /tmp/systemd-private-xxxxx-httpd.service-xxxxxx 再將其權限設定為755 chmod -R 755 /tmp/systemd-private-xxxxx-httpd.service-xxxxxx -------------------------------------------------------------------------------- 再來我們也需檢查PHP程式指定上傳的路徑 假設上傳路徑為 /var/www/html/upload ls /var/www/html/upload drwxr-xr-x. 2 myname web upload 將其擁有者修改...

Colorbox 使用筆記

Colorbox 詳細使用說明請參考 a jQuery lightbox 情境一: 當開發RWD網頁時,我想將 lightbox 的寬度依顯示螢幕的寬度來決定。 想讓 lightbox 的內容不會太擁擠或太空洞。 <script> var deviceWidth = 0; $(function() { deviceWidth = $(window).width(); $(window).resize(function(){ deviceWidth = $(window).width(); }); }); function showMessage() { var colorboxWidth = "100%"; if (deviceWidth > 767) { colorboxWidth = "70%"; } $.colorbox({innerWidth: colorbox}); } </script> 情境二: 為了讓使用者確實閱讀完 lightbox 內的訊息,想將關閉 lightbox 的熱鍵移除。 <script> function showMessage() { $.colorbox({ escKey: false,  // 按下esc鍵關閉 Colorbox 視窗 arrowKey: false,  // 按下方向鍵關閉 Colorbox 視窗 overlayClose: false  // 在背景遮罩點一下滑鼠左鍵,關閉 Colorbox 視窗 }); } </script> 情境三: 當 Lightbox 內的訊息太長,或需要互動性質的內容,開啓 iframe 功能,互動換頁才不會讓整個網頁換掉。 <script> function showMessage() { $.colorbox({ escKey: false, arrowKey: false, o...

安裝CKEditor 4.11

下載路徑 https://ckeditor.com/ckeditor-4/download/ 選擇版本 安裝到網站 將下載的資料夾移至網站目錄。 下載路徑 網站目錄 html檔案內容 <script src="CKEditor路徑/ckeditor.js"></script> <form><code class="prettyprint">內容:<textarea id="ckedit"></textarea></code></form> <script>CKEDITOR.replace('ckedit');</script> 呈現結果 設定toolbar 見到如此煩雜的工具列,看了就是不舒服。 有些工具其實也不必用到,只要在config.js檔設定一些內容,就可以有清爽的工具列了。 config.toolbar = 'Full'; config.toolbar_Full = [ { name: 'document', items : [ 'Source'] }, { name: 'basicstyles', items : [ 'Bold','Italic','Underline','Subscript','Superscript' ] }, { name: 'paragraph', items : [ 'NumberedList','BulletedList','CreateDiv' ] }, { name: 'links', items : [ 'Link','Unlink' ] }, { name: 'insert', items : [ 'Image','Table...