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


Кэш псевдонимов

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

Microsoft Office Outlook 2007, Microsoft Outlook 2010, русская версия и Microsoft Outlook 2013 взаимодействовать с кэшем псевдонимов, также известным как поток автозаполнения. В потоке автозаполнения Outlook сохраняется список автозаполнения, который представляет собой список имен, отображаемых в полях редактирования Кому, Копия и СК, пока пользователь создает сообщение электронной почты. В этом разделе описывается взаимодействие Outlook 2007, Outlook 2010 и Outlook 2013 с потоком автозаполнения, а также рассматривается двоичный формат файла и рекомендуемые способы взаимодействия с потоком автозаполнения.

Для приложений, взаимодействующих с Outlook 2010 или Outlook 2013, поток автозаполнения сохраняется как свойство MAPI и может быть изменен с помощью MAPI или объекта PropertyAccessor сообщения. Объект PropertyAccessor предоставляется в объектных моделях Outlook 2010 или Outlook 2013.

Нет зависимостей от объектной модели Outlook 2007 или API MAPI. Таким образом, приложения, которые вносят изменения в поток автозаполнения в Outlook 2007, можно писать на любом языке программирования.

Взаимодействие с Stream автозаполнения

При доступе к полям редактирования Кому, Копия или СК в сообщении загружается поток автозаполнения и отображается список имен пользователей. Outlook взаимодействует с потоком автозаполнения двумя способами:

  1. Загрузка потока автозаполнения

  2. Сохранение изменений в данных в потоке автозаполнения

Способы хранения данных автозаполнения различаются в Outlook 2007 и Outlook 2010 или Outlook 2013 следующим образом:

Outlook 2007

В Outlook 2007 поток автозаполнения хранится в файле с тем же именем, что и профиль, и расширением .nk2. Например, если используется профиль outlook по умолчанию, файл будет называться outlook.nk2. Файл .nk2 хранится в папке %APPDATA%\Microsoft\Outlook. Дополнительные сведения о двоичном формате файла кэша псевдонимов см. в статье Формат файлов NK2 outlook 2003/2007 и рекомендации разработчика.

Outlook 2010 и Outlook 2013

Outlook 2010 или Outlook 2013 считывает поток автозаполнения из сообщения в таблице Связанное содержимое папки "Входящие" хранилища доставки учетной записи почты. Это скрытое сообщение имеет класс сообщения и тему IPM. Configuration.Autocomplete. Поток автозаполнения хранится в этом сообщении в свойстве PR_ROAMING_BINARYSTREAM (каноническое свойство PidTagRoamingBinary). Данные автозаполнения могут временно кэшироваться в файле автозаполнения .dat, расположенном в папке %USERPROFILE%\AppData\Local\Microsoft\Outlook\RoamCache. Однако файл .dat является только кэшем и не используется для обратной записи в хранилище доставки, когда пользователь выходит из Outlook 2010 или Outlook 2013.

Загрузка Stream автозаполнения

Outlook загружает поток автозаполнения при инициализации элемента с функциями адресации. Например, адреса электронной почты используются в новом сообщении, в ответе на почту, в элементе контакта, в приглашениях на собрание и т. д. Чтобы загрузить данные, Outlook считывает все содержимое потока в память.

Для операций автозаполнения Outlook взаимодействует исключительно с этой структурой в памяти в течение времени существования процесса outlook.exe. Outlook сохраняет структуру только при завершении работы. Дополнительные сведения об этом процессе см. в следующем разделе "Сохранение Stream автозаполнения".

Сохранение Stream автозаполнения

Outlook сохраняет поток автозаполнения при завершении работы, если список автозаполнения изменился любым из следующих способов:

  • Новая запись псевдонима добавляется путем разрешения имени, выбора получателя в диалоговом окне адресной книги или отправки почты получателю, который еще не был в списке.

  • Запись изменяется путем отправки почты существующему получателю в списке.

  • Запись удаляется пользователем через пользовательский интерфейс.

  • Другие незначительные сценарии, не относящиеся к этому разделу.

Сохранение изменений в данных автозаполнения включает запись структуры в памяти обратно в Stream автозаполнения. При взаимодействии с Outlook 2007 поток сохраняется в локальный NK2-файл. Для Outlook 2010 или Outlook 2013 поток автозаполнения записывает данные обратно в таблицу Связанное содержимое папки "Входящие" хранилища доставки учетной записи почты.

Рекомендации

  • Никогда не изменяйте поток автозаполнения частично. Поддерживаемое взаимодействие: 1) чтение всего потока автозаполнения в память, 2) изменение структуры памяти и 3) запись всего потока обратно в таблицу Связанное содержимое папки "Входящие" хранилища доставки учетной записи почты (для Outlook 2010 или Outlook 2013) или в локальный nk2-файл (Outlook 2007).

  • Не взаимодействуйте с потоком автозаполнения во время работы Outlook. Если Outlook работает во время изменения потока, скорее всего, он перезапишет изменения при завершении работы.

  • Не записывайте свойства типа PT_MV_UNICODE и PR_MV_STRING8 в поток автозаполнения для использования Microsoft Outlook 2003. Эти свойства понятны только Outlook 2007, Outlook 2010 и Outlook 2013.

  • При разработке кода, который взаимодействует с Outlook 2007, рекомендуется заблокировать NK2-файл от изменения другими процессами при чтении и записи с помощью стандартных API блокировки файлов (например, LockFile в C/C++ и FileStream.Lock в C#).

  • Изменяйте только свойства типов, которые относятся к набору строк потока автозаполнения. Дополнительные сведения о свойствах и типах свойств потока автозаполнения см. в разделе Автозаполнение Stream.

См. также

Автозавершение Stream

Профили MAPI

Outlook 2003/2007 Формат файлов NK2 и рекомендации разработчика