上頭在年初收到一張電子賀卡,而衍生出見賢思齊的想法。
想要有個系統能夠自動寄送生日祝福給同仁,這個起點其實只是個簡單的功能
不過如果要認真看待的話,也可算是 客戶關係管理(Customer Relationship Management,CRM) 中的一個小小環節。
當然,小程式本身並沒有那麼偉大,勉強算是[保持與客戶關係持續]而已。
再來,分析一下現行電子賀卡系統的功能。
最最一般的就是電子郵件,使用者收到以後看到由HTML語法所組成的網頁,內容不外乎文字、圖片以及少量多媒體效果點綴。不過這樣的話,其實找個人手動發一下EMail就可以,實在看不出什麼需要特別寫程式的地方(嘿啊!公關做就可以了)。
既然都找了資訊部門搞定,就要借題發揮一下,為了技術而技術。
需要有「客製」以及「動態出現」的內容並支援「批次產生」才有寫程式的必要。
工作大致可分為以下幾個部份:
1、卡片---祝你福壽與天齊
關於卡片圖檔的產生,最最根本的技術就是「浮水印」-->把[人名]、[祝辭]透過程式寫到圖檔上去,這樣就可以達到[每個人]、[每個節日]收到客製化賀卡的目的。
於是乎開了一個參數設定檔給程式讀取,定義了:
(1)卡片底圖圖檔
(2)人名、祝辭 的文字位置、字體大小、顏色以及祝辭內容
(3)如果無聊沒事作的話,可以再增加透明度和漸層設定
(4)目前姓名後面沒有加稱謂(如、先生、女士),未來可以運用性別+年齡來產生稱謂
以上參數編為1組卡片設定,然後可以預先編出多組卡片設定,達到隨機發放的效果(避免每年都收到一樣的卡片)。
圖1、參數設定檔
為了方便檢視調整各項參數後卡片的視覺效果,順便作個預覽視窗。
圖2、參數設定產生圖檔預覽
2、卡片完成以後,再來是處理收卡片的人-->也就是名單
於是著手調查內部系統,原本以為要從單位的LDAP伺服器(AD)匯出資料,沒想到差勤系統的東西更好用!
差勤系統就內建有員工姓名、員工編號、電子郵件、生日、性別等必需,開個Access MDB檔,把它們從差勤系統匯入-->員工OK。
圖3、同步員工資料庫
摸索差勤系統的時候,還意外發現志工資料!
想想不妨對平時熱心幫忙的志工表達一下謝意,除了自動匯入資料功能,也來作個名單維護,都說要搞CRM了!這功能可以做成芳名錄,發完了貴賓發恩公,再發......。
志工部份的資料,由於只有姓名和編號,必須由志工召募管理單位提供他們的電子郵件、生日、性別等欄位,所以從差勤系統匯入姓名和編號後,再寫個簡單的Access編輯視窗,提供給志工召募管理單位自行編輯維護。
圖4、志工資料庫直接編輯Access資料庫
3、卡片有了,發卡對象有了,再來就是郵差-->發E-Mail
發E-Mail程式很基本,只是在處理賀卡時要再細膩一點,
也就是人家打開郵件的時候,在信件內容就要看到卡片,不是白白的一片,然後看到一個圖檔附件(手動開圖才看到~醬就落漆了)
所以小弟研究了一下將卡片圖檔作為附件,定義MIME內容嵌入電子郵件直接展示的作法。
圖5、賀卡郵件展開示意
目前程式的第1個任務對象是內部員工,是在同一個網域下發電子郵件-->理所當然沒問題!
可是當程式針對志工或恩公們發賀卡,外部郵件伺服器是否接受?就是一個值得關切的課題。
程式發E-Mail很簡單,程式發E-Mail人家肯收不簡單,程式發E-Mail人家收了還沒事更不簡單。
(如、擋掉你家的郵件伺服器 or 被告到垃圾信件黑名單 或 被要求提供收件人取消的方法、取消的電話、取消的操作網頁...等)
4、定期更新
這就簡單多了,將上述功能冠上「批次」(我要打10個)+「每天」(持之以恆)即可。
本次完成的視窗程式手動操作方式大致為:
至少先設定1組卡片底圖參數-->員工資料更新(or 志工資料維護)-->寄送賀卡。
每天將更新名單、產生賀卡圖檔、以及寄送電子郵件等步驟批次作,完成後再將卡片暫存檔給清空。
這用的還是---讓視窗程式支援命令列模式(Command Mode),再透過撰寫批次指令(.bat),交給Windows系統排程定期執行的「老招」。
圖6、Windows系統排程1-自動更新
圖7、Windows系統排程2-自動寄信
以上,是我抽空完成的小玩具---生日賀卡產生器,目前是初版(可能也是終版)
圖8、視窗程式,可手動操作自行發賀卡,也可以進行偵錯
未來還可以完成網頁版,讓使用者自行挑選卡片、輸入祝辭及對象(不過這已經有很多現成的系統了);
或是除了生日以外,還能自行定義節日或活動,自訂新增發送對象,自訂單次事件發or循環發,然後同一事件又隨機換卡片...等功能,
乍看之下一個簡單的課堂小作業的題目,就看你是要小題大作,還是大題小做了。