1

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

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

一般来说,这运行良好,但我从来没有能够解决这个基本问题:

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

  1. 我不能依赖PR_ENTRYID,这个属性会随着联系人移动或邮箱移动而改变。
  2. 我不能依赖我自己的 ID(例如 DB 表 ID),因为这些会与联系人一起复制。
  3. 我绝对不能依赖姓名或电子邮件地址等字段,它们可能会发生变化和更新。

目前我使用 1(首选)和 2(后备)的组合。但不可避免地,有时用户会遇到同步到错误联系人的问题,因为没有一个给定的PR_ENTRYID,而是两个具有相同 DB ID 的,其中选择了错误的一个。

那里有一堆 Outlook 同步产品,所以我想这个问题一定是可以解决的。

4

1 回答 1

2

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

这里的不同之处在于我们的系统有一堆重复项,这些重复项稍后会被用户解决。当它们合并时,我将删除旧记录并使用所有新信息和新 ID 更新 Outlook。

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

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

于 2008-10-13T15:13:39.543 回答