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


Получение учетной записи для папки

В этом примере показано получение учетной записи, которая связана с папкой в текущем сеансе.

Пример

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

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

Если вы используете Visual Studio для тестирования этого примера кода, сначала добавьте ссылку на компонент Microsoft Outlook 15.0 Object Library и задайте переменную Outlook при импорте пространства имен Microsoft.Office.Interop.Outlook. Инструкция using не должна находиться непосредственно перед функциями в примере кода, но ее нужно добавить перед объявлением общедоступного класса. В следующей строке кода показано, как выполнить импорт и назначение в C#.

using Outlook = Microsoft.Office.Interop.Outlook;
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 currect 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;
}

См. также