Список автозаполнения электронной почты Outlook - PullRequest
0 голосов
/ 23 апреля 2020

Я хочу извлечь список всех автозаполненных адресов электронной почты в outlook 2016 (офис 365), используя C#. Я использую следующий код:

NameSpace olNS = this.Application.GetNamespace("MAPI");
MAPIFolder inboxFolder = olNS.GetDefaultFolder(OlDefaultFolders.olFolderInbox);
StorageItem storage = inboxFolder.GetStorage("IPM.Configuration.Autocomplete", OlStorageIdentifierType.olIdentifyByEntryID);
PropertyAccessor propertyAcc = storage.PropertyAccessor;
byte[] bytes = propertyAcc.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x7C090102");

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

Пожалуйста, помогите в этом отношении Спасибо

1 Ответ

0 голосов
/ 23 апреля 2020

Вам нужно передать OlStorageIdentifierType.olIdentifyByMessageClass вместо OlStorageIdentifierType.olIdentifyByEntryID:

NameSpace olNS = this.Application.GetNamespace("MAPI");
MAPIFolder inboxFolder = olNS.GetDefaultFolder(OlDefaultFolders.olFolderInbox);
StorageItem storage = inboxFolder.GetStorage("IPM.Configuration.Autocomplete", OlStorageIdentifierType.olIdentifyByMessageClass);
PropertyAccessor propertyAcc = storage.PropertyAccessor;
byte[] bytes = (byte[])propertyAcc.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x7C090102");

Код, указанный выше, работает на моей машине как брелок!

Однако, помните, что GetStorage возвращает ошибку, если тип хранилища папки не поддерживается. Следующие хранилища возвращают ошибку при вызове GetStorage:

  • Хранилище Hotmail
  • Inte rnet Хранилища протокола доступа к сообщениям (IMAP)
  • Хранилища делегатов
  • Publi c папка для хранения
...