Outlook联系人同步 - 如何识别要同步的正确对象?

时间:2008-10-08 08:18:01

标签: outlook synchronization exchange-server mapi cdo.message

我有一个Web应用程序,它通过CDO将Outlook联系人同步到数据库(并返回)。数据库仅包含每个联系人一次(至少在理论上,当然是双重发生),为联系人提供单点变更,无论有多少用户在Outlook中拥有该特定联系人(如交互或类似产品)。

同步过程不是自动的,而是用户初始化的。在用户决定同步其联系人之前,可以通过任意时间跨度。在此期间,其他用户可能已经更新了这些联系人的子集。

一般情况下,运行良好,但我从未能解决这个基本问题:

如何毫无疑问地识别邮箱中的联系人对象?

  1. 我不能依赖PR_ENTRYID,这个 联系人移动或财产变更 邮箱移动。
  2. 我不能依赖自己的ID(例如DB 表ID),因为这些被复制了 与联系。
  3. 我绝对不能依赖田野 他们喜欢名字或电子邮件地址 可能会有变化和更新。
  4. 目前我使用1(首选)和2(后退)的组合。但不可避免的是,有时用户会遇到同步到错误联系人的问题,因为没有给定的PR_ENTRYID,但有两个具有相同的DB ID,其中选择了错误的一个。

    有很多Outlook同步产品,所以我想这个问题必须是可以解决的。

1 个答案:

答案 0 :(得分:2)

我有一个类似的问题需要克服一个内部Outlook插件来进行联系同步。我最终在Outlook对象中粘贴了一个数据库ID,并在执行同步时引用它。

这里的区别在于我们的系统有一堆重复项,以后会被用户解决。当它们合并时,我将删除旧记录并使用所有新信息和新ID更新outlook。

您可以进行模糊匹配以识别重复项,但重复分辨率是一个有趣的问题,主要是试验和错误。我们已成功地使用levenshtein距离算法实现“模糊”匹配逻辑,将名称和地址清理为哈希码。

祝你好运,我的同步经历有些痛苦。