У меня есть веб-приложение, которое синхронизирует контакты Outlook с базой данных (и обратно) через CDO. БД содержит каждый контакт только один раз (по крайней мере, теоретически, конечно же, случаются дубликаты), обеспечивая единую точку изменения для контакта, независимо от того, сколько пользователей имеют этот конкретный контакт в Outlook (например, Interaction или подобные продукты).
Процесс синхронизации не автоматический, а инициализированный пользователем. Может пройти произвольный промежуток времени, прежде чем пользователи решат синхронизировать свои контакты. Подмножество этих контактов, возможно, было обновлено другими пользователями.
Как правило, все работает нормально, но мне никогда не удавалось решить эту фундаментальную проблему:
Как безошибочно идентифицировать контактный объект в почтовом ящике?
- Я не могу положиться на
PR_ENTRYID
, это
изменение свойства при перемещении контакта или
перемещение почтового ящика.
- Я не могу полагаться на свои собственные идентификаторы (например, БД
идентификатор таблицы), потому что они копируются
с контактом.
- Я абсолютно не могу положиться на поля
как имя или адрес электронной почты, они
могут быть изменены и обновлены.
В настоящее время я использую комбинацию 1 (предпочтительно) и 2 (запасной вариант). Но неизбежно, иногда пользователи сталкиваются с проблемой синхронизации с неправильным контактом, потому что нет ни одного с данным PR_ENTRYID
, а два с одним и тем же идентификатором БД, из которых выбран неправильный.
Существует множество продуктов для синхронизации с Outlook, поэтому я думаю, что проблема должна быть решена.