我有一个通过 CDO 将 Outlook 联系人同步到数据库(并返回)的 Web 应用程序。DB 只包含每个联系人一次(至少理论上,当然会发生双联),为联系人提供单点更改,无论有多少用户在 Outlook 中拥有该特定联系人(如交互或类似产品)。
同步过程不是自动的,而是用户初始化的。在用户决定同步他们的联系人之前,可以经过任意时间跨度。与此同时,其他用户可能已经更新了这些联系人的一个子集。
一般来说,这运行良好,但我从来没有能够解决这个基本问题:
我如何毫无疑问地识别邮箱中的联系人对象?
- 我不能依赖
PR_ENTRYID
,这个属性会随着联系人移动或邮箱移动而改变。 - 我不能依赖我自己的 ID(例如 DB 表 ID),因为这些会与联系人一起复制。
- 我绝对不能依赖姓名或电子邮件地址等字段,它们可能会发生变化和更新。
目前我使用 1(首选)和 2(后备)的组合。但不可避免地,有时用户会遇到同步到错误联系人的问题,因为没有一个给定的PR_ENTRYID
,而是两个具有相同 DB ID 的,其中选择了错误的一个。
那里有一堆 Outlook 同步产品,所以我想这个问题一定是可以解决的。