Obtener la cuenta de una carpeta
Este ejemplo obtiene la cuenta que está asociada a una carpeta en la sesión actual.
Ejemplo
En el siguiente ejemplo de código, la función DisplayAccountForCurrentFolder llama a la función GetAccountForFolder para identificar la cuenta cuyo almacén de entrega predeterminado hospeda la carpeta actual y después muestra el nombre de la carpeta. GetAccountForFolder relaciona el almacén de la carpeta actual (obtenido de la propiedad Store) con el almacén de entrega predeterminado para cada cuenta (obtenido con la propiedad DeliveryStore) que está definido en la colección Accounts para la sesión. GetAccountForFolder devuelve el objeto Account si se encuentra una coincidencia; en caso contrario, devuelve una referencia nula.
En una sesión de Microsoft Outlook con varias cuentas definidas en el perfil, la carpeta que se muestra en el explorador activo no debe residir necesariamente en el almacén predeterminado para esa sesión, sino que puede residir en uno de los distintos almacenes asociados a las distintas cuentas. En este tema se muestra cómo identificar la cuenta en la que el almacén de entregas predeterminado es el mismo almacén que hospeda la carpeta.
Si usa Visual Studio para probar este ejemplo de código, primero debe agregar una referencia al componente de la biblioteca de objetos de Microsoft Outlook 15.0 y especificar la variable de Outlook al importar el espacio de nombres Microsoft.Office.Interop.Outlook. La instrucción using no debe producirse directamente antes de las funciones en el ejemplo de código, pero debe agregarse antes de la declaración de clase pública. La siguiente línea de código muestra cómo realizar la importación y la asignación en 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;
}