Разрешение имени получателя
Область применения: Outlook 2013 | Outlook 2016
При адресе сообщения создается список получателей со свойствами, относящимися к каждому получателю. К моменту отправки сообщения одним из этих свойств должен быть долгосрочный идентификатор записи получателя. Чтобы убедиться, что каждый получатель включает свойство PR_ENTRYID (PidTagEntryId), передайте структуру ADRLIST , описывающую список получателей, в содержимом параметра lpAdrList в вызове IAddrBook::ResolveName.
ResolveName начинает обработку, игнорируя уже разрешенные записи в структуре ADRLIST, о чем свидетельствует наличие идентификатора записи в массиве SPropValue соответствующей структуры ADRENTRY. Затем ResolveName автоматически назначает одноразовые идентификаторы записей двум типам получателей:
Получатели с адресом, отформатированным в виде интернет-адреса
Получатели с адресом в следующем формате:
displayname[address type:email address]
Для всех оставшихся записей ResolveName выполняет поиск точного соответствия отображаемого имени в адресной книге. ResolveName использует свойство PR_AB_SEARCH_PATH (PidTagAbSearchPath) для определения набора контейнеров для поиска и порядка поиска. MAPI вызывает метод IABContainer::ResolveNames каждого контейнера, чтобы попытаться разрешить все имена. Так как некоторые контейнеры не поддерживают ResolveNames, если контейнер возвращает MAPI_E_NO_SUPPORT, MAPI применяет ограничение свойства PR_ANR (PidTagAnr) к таблице содержимого. Все контейнеры адресных книг необходимы для поддержки разрешения имен с этим ограничением. После разрешения всех имен дальнейшие вызовы контейнера не выполняются. Если все контейнеры были вызваны, но остаются неоднозначные или неразрешенные имена, MAPI по возможности отображает диалоговое окно с запросом на разрешение оставшихся имен.
Ограничение PR_ANR соответствует значению свойства PR_ANR и отображаемого имени в структуре ADRLIST . Ограничение представления таблицы содержимого контейнера ограничением свойства PR_ANR приводит к тому, что поставщик адресной книги выполняет поиск по типу "лучшего предположения", соответствующего свойству, которое имеет смысл для поставщика. Например, один поставщик адресной книги всегда может сопоставлять имена в списке получателей с PR_DISPLAY_NAME (PidTagDisplayName), а другой может разрешить администратору выбрать свойство.
Установка ограничения свойства PR_ANR для таблицы содержимого контейнера адресной книги
- Создайте структуру SRestriction , как показано в следующем коде:
SRestriction SRestrict;
SRestrict.rt = RES_PROPERTY;
SRestrict.res.resProperty.relop = RELOP_EQ;
SRestrict.res.resProperty.ulPropTag = PR_ANR;
SRestrict.res.resProperty.lpProp->ulPropTag = PR_ANR;
SRestrict.res.resProperty.lpProp->Value.LPSZ = lpszName;
- Вызовите метод IMAPITable::Restrict таблицы содержимого, передав структуру SRestriction в качестве параметра lpRestriction .