孫光嶠
(中國電子科技集團(tuán)公司第五十五研究所,江蘇 南京 210016)
Outlook 已在企業(yè)中應(yīng)用廣泛,員工通過Outlook 收發(fā)郵件,實(shí)現(xiàn)必要的溝通、交流。在郵件發(fā)送環(huán)節(jié),群發(fā)郵件占據(jù)了較大比例,手動逐個選擇收件人,不僅效率低下而且極易出現(xiàn)錯選、漏選的情況。
Visual Studio Tools for Office(VSTO)技術(shù)可以使用.NET Framework 定制和擴(kuò)展Microsoft Office 應(yīng)用程序和文檔,它包含的工具還可以使這個定制在Visual Studio 中更容易完成。
本文介紹并實(shí)現(xiàn)的聯(lián)系人管理系統(tǒng),是基于VSTO在Outlook 自帶聯(lián)系人功能基礎(chǔ)上進(jìn)行的補(bǔ)充和拓展。系統(tǒng)自動從后臺SQL SERVER 數(shù)據(jù)庫同步聯(lián)系人及分組信息,然后更新本地聯(lián)系人,從而靈活、方便地實(shí)現(xiàn)聯(lián)系人管理,達(dá)到提高收件人選擇準(zhǔn)確性和效率的目的。
系統(tǒng)數(shù)據(jù)庫采用SQLServer2008,共有3 張表,分別為[EMainlDef],[EmailGroup],[GroupDef]。表[EMainlDef]及[GroupDef]分別用于郵箱賬戶和郵箱分組的定義,[Email-Group]為系統(tǒng)中郵箱和分組的關(guān)聯(lián)關(guān)系表。各個表的相關(guān)字段設(shè)置及描述見表1-表3。
表1 EMainlDef
表2 EMailGroup
表3 GroupDef
此外,數(shù)據(jù)庫還包括一張視圖[V_EMailGroup],該視圖通過表[EmailGroup]將表[EMainlDef]、[GroupDef]關(guān)聯(lián),提供完整的郵箱及分組信息查詢。前端與數(shù)據(jù)庫的數(shù)據(jù)交互通過Linq to SQL 實(shí)現(xiàn),極大地減少了開發(fā)量。
系統(tǒng)通過Ribbon 為用戶提供了必要的操作菜單,主要用于手動同步及自定義聯(lián)系人的編輯,具體界面如圖1所示。
圖1 通過Ribbon 提供的操作菜單
1.3.1 Outlook 啟動,Ribbon 加載
在安裝了該軟件的計(jì)算機(jī)上每次打開Outlook 時會加載1.2 所述的Ribbon 界面,此時會觸發(fā)Ribbon_Load事件。
1.3.2 同步或注冊當(dāng)前郵箱信息
當(dāng)Ribbon_Load 事件觸發(fā)時,軟件獲取當(dāng)前Outlook的郵箱信息并確認(rèn)數(shù)據(jù)庫中是否存在該信箱,如果已經(jīng)存在則同步最新信息到數(shù)據(jù)庫,反之則注冊當(dāng)前郵箱到數(shù)據(jù)庫。
1.3.3 定時器開啟,檢測聯(lián)系人版本
當(dāng)定時器觸發(fā)后確認(rèn)當(dāng)前聯(lián)系人的數(shù)據(jù)版本是否為最新版本,如果不是則執(zhí)行數(shù)據(jù)同步。
1.3.4 數(shù)據(jù)同步過程
(1)從數(shù)據(jù)庫下載最新聯(lián)系人信息;
(2)清空本地聯(lián)系人;
(3)根據(jù)下載的最新數(shù)據(jù)創(chuàng)建聯(lián)系人;
(4)根據(jù)下載的最新分組信息添加聯(lián)系人分組;
(5)更新注冊表,記錄當(dāng)前聯(lián)系人的版本號。
具體工作流程如圖2 所示。
圖2 系統(tǒng)工作流程示意圖
為了在發(fā)送郵件選擇收件人地址時優(yōu)先從聯(lián)系人中搜索、匹配,需要設(shè)置地址選項(xiàng),將設(shè)置調(diào)整為聯(lián)系人優(yōu)先,如圖3 所示。
圖3 調(diào)整地址檢查順序?yàn)槁?lián)系人優(yōu)先
using OL=Microsoft.Office.Interop.Outlook;
在已安裝上述軟件的計(jì)算機(jī)上,當(dāng)在收件人搜索欄中輸入字母“G”時,系統(tǒng)會自動從聯(lián)系人中匹配以“G”開頭的聯(lián)系人或分組。選擇目標(biāo)分組后,該分組下的聯(lián)系人對應(yīng)的郵箱地址會被一起加入到收件人列表中。效果如圖4 所示。
圖4 聯(lián)系人匹配
通過上述方案,我們實(shí)現(xiàn)了Outlook 聯(lián)系人、分組的靈活管理。在郵件發(fā)送環(huán)節(jié),避免了手動逐個選擇收件人,不僅提高了效率而且避免了錯選、漏選收件人的情況,為工作帶來便利。