孙光峤
(中国电子科技集团公司第五十五研究所,江苏 南京 210016)
Outlook 已在企业中应用广泛,员工通过Outlook 收发邮件,实现必要的沟通、交流。在邮件发送环节,群发邮件占据了较大比例,手动逐个选择收件人,不仅效率低下而且极易出现错选、漏选的情况。
Visual Studio Tools for Office(VSTO)技术可以使用.NET Framework 定制和扩展Microsoft Office 应用程序和文档,它包含的工具还可以使这个定制在Visual Studio 中更容易完成。
本文介绍并实现的联系人管理系统,是基于VSTO在Outlook 自带联系人功能基础上进行的补充和拓展。系统自动从后台SQL SERVER 数据库同步联系人及分组信息,然后更新本地联系人,从而灵活、方便地实现联系人管理,达到提高收件人选择准确性和效率的目的。
系统数据库采用SQLServer2008,共有3 张表,分别为[EMainlDef],[EmailGroup],[GroupDef]。表[EMainlDef]及[GroupDef]分别用于邮箱账户和邮箱分组的定义,[Email-Group]为系统中邮箱和分组的关联关系表。各个表的相关字段设置及描述见表1-表3。
表1 EMainlDef
表2 EMailGroup
表3 GroupDef
此外,数据库还包括一张视图[V_EMailGroup],该视图通过表[EmailGroup]将表[EMainlDef]、[GroupDef]关联,提供完整的邮箱及分组信息查询。前端与数据库的数据交互通过Linq to SQL 实现,极大地减少了开发量。
系统通过Ribbon 为用户提供了必要的操作菜单,主要用于手动同步及自定义联系人的编辑,具体界面如图1所示。
图1 通过Ribbon 提供的操作菜单
1.3.1 Outlook 启动,Ribbon 加载
在安装了该软件的计算机上每次打开Outlook 时会加载1.2 所述的Ribbon 界面,此时会触发Ribbon_Load事件。
1.3.2 同步或注册当前邮箱信息
当Ribbon_Load 事件触发时,软件获取当前Outlook的邮箱信息并确认数据库中是否存在该信箱,如果已经存在则同步最新信息到数据库,反之则注册当前邮箱到数据库。
1.3.3 定时器开启,检测联系人版本
当定时器触发后确认当前联系人的数据版本是否为最新版本,如果不是则执行数据同步。
1.3.4 数据同步过程
(1)从数据库下载最新联系人信息;
(2)清空本地联系人;
(3)根据下载的最新数据创建联系人;
(4)根据下载的最新分组信息添加联系人分组;
(5)更新注册表,记录当前联系人的版本号。
具体工作流程如图2 所示。
图2 系统工作流程示意图
为了在发送邮件选择收件人地址时优先从联系人中搜索、匹配,需要设置地址选项,将设置调整为联系人优先,如图3 所示。
图3 调整地址检查顺序为联系人优先
using OL=Microsoft.Office.Interop.Outlook;
在已安装上述软件的计算机上,当在收件人搜索栏中输入字母“G”时,系统会自动从联系人中匹配以“G”开头的联系人或分组。选择目标分组后,该分组下的联系人对应的邮箱地址会被一起加入到收件人列表中。效果如图4 所示。
图4 联系人匹配
通过上述方案,我们实现了Outlook 联系人、分组的灵活管理。在邮件发送环节,避免了手动逐个选择收件人,不仅提高了效率而且避免了错选、漏选收件人的情况,为工作带来便利。