Получение учетной записи для папки
В этом примере показано получение учетной записи, которая связана с папкой в текущем сеансе.
Пример
В следующем примере кода функция 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;
}