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


Определение папки с учетной записью

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

В следующем примере кода функция вызывает функциюGetAccountForFolder, чтобы определить учетную запись, DisplayAccountForCurrentFolder в хранилище доставки которой по умолчанию размещена текущая папка, а затем отображается имя папки. GetAccountForFolder сопоставляет хранилище текущей папки (полученной из свойства Folder.Store ) с хранилищем доставки по умолчанию для каждой учетной записи (полученной с помощью свойства Account.DeliveryStore ), определенной в коллекции Accounts для сеанса. GetAccountForFolder возвращает объект Account при обнаружении совпадения; В противном случае возвращается значение NULL.

Следующий пример управляемого кода написан на C#. Для запуска примера управляемого кода для .NET Framework, который вызывает модель COM, необходимо использовать сборку взаимодействия, которая определяет и сопоставляет управляемые интерфейсы с объектами COM в библиотеке типов объектной модели. Для Outlook можно использовать Visual Studio и первичную сборку взаимодействия Outlook (PIA). Перед запуском примеров управляемого кода для Outlook 2013 убедитесь, что вы установили Outlook 2013 PIA и добавили ссылку на компонент Microsoft Outlook 15.0 Object Library в Visual Studio. В классе надстройки ThisAddIn Outlook следует использовать следующий код (с помощью средств разработчика Office для Visual Studio). Объект Application в коде должен быть доверенным объектом Application Outlook, предоставленным объектом ThisAddIn.Globals. Дополнительные сведения об использовании Outlook PIA для разработки управляемых решений Outlook см. в статье Справочник по основной сборке взаимодействия Outlook на веб-сайте MSDN.

private void DisplayAccountForCurrentFolder() 
{ 
    Outlook.Folder myFolder = Application.ActiveExplorer().CurrentFolder  
        as Outlook.Folder; 
    string msg = "Account for Current Folder:" + "\n" + 
        GetAccountForFolder(myFolder).DisplayName; 
    MessageBox.Show(msg, 
        "GetAccountForFolder", 
        MessageBoxButtons.OK, 
        MessageBoxIcon.Information); 
} 
 
Outlook.Account GetAccountForFolder(Outlook.Folder folder) 
{ 
    // Obtain the store on which the folder resides. 
    Outlook.Store store = folder.Store; 
 
    // Enumerate the accounts defined for the session. 
    foreach (Outlook.Account account in Application.Session.Accounts) 
    { 
        // Match the DefaultStore.StoreID of the account 
        // with the Store.StoreID for the correct folder. 
        if (account.DeliveryStore.StoreID  == store.StoreID) 
        { 
            // Return the account whose default delivery store 
            // matches the store of the given folder. 
            return account; 
        } 
     } 
     // No account matches, so return null. 
     return null; 
}

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.