Поделиться через


Профили MAPI

Область применения: Outlook 2013 | Outlook 2016

Профиль хранит сведения о поставщиках услуг и службах сообщений, установленных на компьютере. Для каждого сеанса клиент во время входа выбирает один профиль, в котором описываются используемые поставщики и службы. Клиент может выбрать один из наборов профилей и при необходимости установить один из профилей по умолчанию. Профиль по умолчанию — это профиль, который выбирается автоматически, когда клиент запускает сеанс и явно не указал профиль.

Также в этих разделах вы найдете обсуждение кэша псевдонимов, который хранится в двоичном потоке.

Разделы профиля

Профили делятся на разделы, к которым клиенты и поставщики услуг обращаются для отображения свойств профиля пользователям или внесения изменений в конфигурацию. Раздел профиля — это объект MAPI, реализующий интерфейс IProfSect , интерфейс, производный от IMAPIProp и не имеющий дополнительных методов. Дополнительные сведения см. в разделе IProfSect : IMAPIProp. Его единственная цель — управлять свойствами раздела профиля. Чтобы получить указатель IProfSect на определенный раздел профиля, клиенты и поставщики услуг вызывают следующие методы.

Свойство Значение
Клиенты могут вызывать:
IMAPISession::OpenProfileSection
Поставщики услуг могут вызывать:
IMAPISupport::OpenProfileSection
Клиенты или поставщики могут вызывать:
IProviderAdmin::OpenProfileSection

Профили организованы иерархически так же, как MAPISVC. INF-файл. В верхней части иерархии находятся разделы профиля, содержащие сведения, относящиеся к профилю. Средний уровень включает разделы, содержащие сведения о конкретной службе сообщений, а нижний уровень — разделы, содержащие сведения об одном из поставщиков служб в службе сообщений.

Каждый профиль имеет несколько обязательных свойств, которые хранятся в одном или нескольких разделах профиля. Например, каждый профиль имеет свойства PR_PROFILE_NAME (PidTagProfileName) и PR_SEARCH_KEY (PidTagSearchKey). Для ключа поиска профиля задается значение, определенное в MAPIGUID. H как MUID_PROFILE_INSTANCE и всегда гарантируется быть уникальным среди всех профилей. Хотя два профиля могут иметь одинаковые имена, они не могут иметь один и тот же ключ поиска. Ключи поиска должны рассматриваться как двоичные данные, а не как данные определенного типа.

Поставщики хранилища сообщений должны включить свойство PR_DISPLAY_NAME хранилища сообщений (PidTagDisplayName) в разделы профиля профиля и поставщика хранилища сообщений, а также синхронизировать эти записи. При создании хранилища сообщений поставщик задает PR_DISPLAY_NAME на основе значения, хранящегося в этих разделах профиля.

Существует два основных различия между разделами профиля и другими объектами, которые наследуются от IMAPIProp:

  • Разделы профиля не поддерживают транзакции.

  • Разделы профиля не поддерживают именованные свойства, возвращая MAPI_E_NO_SUPPORT из реализаций IMAPIProp::GetIDsFromNames и IMAPIProp::GetNamesFromIDs . Дополнительные сведения см. в разделах IMAPIProp::GetIDsFromNames и IMAPIProp::GetNamesFromIDs.

Так как разделы профиля не поддерживают транзакции, любые изменения, внесенные с помощью вызовов IMAPIProp::CopyProps, CopyTo или SetProps , немедленно вступают в силу. Дополнительные сведения см. в разделе IMAPIProp::CopyProps. Клиенты и поставщики услуг могут вызывать метод IMAPIProp::SaveChanges раздела профиля, и он будет выполнен успешно, но это не влияет на данные раздела профиля. Дополнительные сведения см. в разделе IMAPIProp::SaveChanges. Немедленное изменение может повлиять на то, как поставщики услуг реализуют листы свойств, которые клиенты используют для отображения свойств профиля пользователям. Поставщики услуг, которые хотят, чтобы пользователи могли откладывать или отменять изменения, должны реализовывать свои листы свойств с копиями разделов профиля вместо реальных разделов. Используя копии, пользователи могут вносить изменения, а затем отменять их, оставляя исходные разделы профиля нетронутыми.

Порядок отображения сведений в профиле влияет на то, как MAPI настраивает ресурсы и выполняет назначения в сеансе. Следующие назначения зависят от порядка профилей:

  • Хранилище сообщений по умолчанию

  • Личная адресная книга

  • Путь поиска хранилища сообщений по умолчанию

  • Путь поиска адресной книги по умолчанию

  • Заказ поставщика транспорта

MAPI задает хранилище сообщений по умолчанию в качестве первого хранилища сообщений в профиле, у которого в свойстве PR_RESOURCE_FLAGS (PidTagResourceFlags) установлен флаг STATUS_DEFAULT_STORE, который указывает, что оно может быть хранилищем по умолчанию. Клиенты могут переопределить этот параметр, вызвав IMAPISession::SetDefaultStore. Дополнительные сведения см. в разделе IMAPISession::SetDefaultStore.

MAPI создает порядок транспорта для обработки исходящих и входящих сообщений. Если для сообщения определенного типа зарегистрировано несколько поставщиков транспорта, MAPI использует этот порядок, чтобы определить, какой поставщик должен обрабатывать сообщение. MAPI задает порядок транспорта в том порядке, в котором поставщики транспорта были добавлены в профиль с одним исключением — транспорты, задающие флаг STATUS_XP_PREFER_LAST в свойстве PR_RESOURCE_FLAGS , размещаются в последнем порядке. Клиенты могут задать порядок транспорта, вызвав IMsgServiceAdmin::MsgServiceTransportOrder. Дополнительные сведения см. в разделе IMsgServiceAdmin::MsgServiceTransportOrder.

Эти рекомендации по заказу поставщиков услуг и служб сообщений иногда могут конфликтовать. Если возникает конфликт, код должен устранить конфликт. Вы можете использовать программу mail панель управления для проверки созданного профиля, чтобы определить, настроены ли поставщики должным образом.