Obtenir la Liste d’Adresses Globale ou d’un ensemble de listes d’adresses pour un magasin
Cette rubrique contient deux exemples de code qui montrent comment obtenir la liste d'adresses globale associée à un magasin et comment obtenir toutes les listes d'adresses associées à un magasin.
Exemple
Dans une session Microsoft Outlook où plusieurs comptes Microsoft Exchange sont définis dans le profil, plusieurs listes d'adresses peuvent être associées à un magasin. Dans chacun des exemples de code suivants, le magasin spécifique qui nous intéresse est le magasin du dossier actif affiché dans l'explorateur actif, mais l'algorithme permettant d'obtenir une liste d'adresses globale ou un ensemble d'objets AddressList pour un magasin s'applique à n'importe quel magasin Exchange.
Le premier exemple de code contient la méthode DisplayGlobalAddressListForStore ainsi que la fonction GetGlobalAddressList. La méthode DisplayGlobalAddressListForStore affiche, dans la boîte de dialogueSélectionner des Noms, la Liste d'adresses Globale associée au magasin actuel. DisplayGlobalAddressListForStore obtient d’abord le magasin actif. S'il s'agit d'un magasin Exchange, la fonction GetGlobalAddressList est appelée pour obtenir la Liste d'Adresses Globale associée au magasin actif.
GetGlobalAddressList utilise l’objet PropertyAccessor et la propriété https://schemas.microsoft.com/mapi/proptag/0x3D150102
MAPI pour obtenir la propriété PR_EMSMDB_SECTION_UID d’une liste d’adresses et du magasin actuel. GetGlobalAddressList identifie une liste d’adresses comme associée à un magasin si leurs propriétés PR_EMSMDB_SECTION_UID correspondent, et la liste d’adresses est la liste d’adresses globale si sa propriété AddressListType est olExchangeGlobalAddressList. Si l'appel à la fonction réussit, DisplayGlobalAddressListForStore utilise l'objetSelectNamesDialogpour afficher la Liste d'Adresses Globale retournée dans la boîte de dialogueSélectionner des Noms.
Si vous utilisez Visual Studio pour tester cet exemple de code, vous devez d’abord ajouter une référence au composant Bibliothèque d’objets Microsoft Outlook 15.0 et spécifier la variable lorsque vous importez l’espace de noms Microsoft.Office.Interop.Outlook. L’instruction using ne doit pas se produire juste avant les fonctions de l’exemple de code, mais doit être ajoutée avant la déclaration publique. La ligne de code suivante montre comment effectuer l’importation et l’affectation dans C#.
using Outlook = Microsoft.Office.Interop.Outlook;
void DisplayGlobalAddressListForStore()
{
Outlook.Folder currentFolder =
Application.ActiveExplorer().CurrentFolder
as Outlook.Folder;
Outlook.Store currentStore = currentFolder.Store;
if (currentStore.ExchangeStoreType !=
Outlook.OlExchangeStoreType.olNotExchange)
{
Outlook.SelectNamesDialog snd =
Application.Session.GetSelectNamesDialog();
Outlook.AddressList addrList =
GetGlobalAddressList(currentStore);
if (addrList != null)
{
snd.InitialAddressList = addrList;
snd.Display();
}
}
}
public Outlook.AddressList GetGlobalAddressList(Outlook.Store store)
{
string PR_EMSMDB_SECTION_UID =
@"http://schemas.microsoft.com/mapi/proptag/0x3D150102";
if (store == null)
{
throw new ArgumentNullException();
}
Outlook.PropertyAccessor oPAStore = store.PropertyAccessor;
string storeUID = oPAStore.BinaryToString(
oPAStore.GetProperty(PR_EMSMDB_SECTION_UID));
foreach (Outlook.AddressList addrList
in Application.Session.AddressLists)
{
Outlook.PropertyAccessor oPAAddrList =
addrList.PropertyAccessor;
string addrListUID = oPAAddrList.BinaryToString(
oPAAddrList.GetProperty(PR_EMSMDB_SECTION_UID));
// Return addrList if match on storeUID
// and type is olExchangeGlobalAddressList.
if (addrListUID == storeUID && addrList.AddressListType ==
Outlook.OlAddressListType.olExchangeGlobalAddressList)
{
return addrList;
}
}
return null;
}
Le deuxième exemple de code contient la méthode EnumerateAddressListsForStore et la fonction GetAddressLists. La méthode EnumerateAddressListsForStore affiche le type et l'ordre de résolution de chaque liste d'adresses définie pour le magasin actif. La méthode EnumerateAddressListsForStore commence par obtenir le magasin actif, puis appelle la fonction GetAddressLists pour obtenir un objet de liste<.NET Framework générique >qui contient les objets AddressList du magasin actif.
GetAddressLists énumère chaque liste d’adresses définie pour la session, utilise l’objet PropertyAccessor et la propriété https://schemas.microsoft.com/mapi/proptag/0x3D150102
nommée MAPI pour obtenir la propriété PR_EMSMDB_SECTION_UID d’une liste d’adresses et la propriété PR_EMSMDB_SECTION_UID d’un magasin actif. GetGlobalAddressList identifie une liste d’adresses comme associée à un magasin si leurs propriétés PR_EMSMDB_SECTION_UID correspondent et retourne un ensemble de listes d’adresses pour le magasin actuel. EnumerateAddressListsForStore utilise ensuite les propriétés AddressListTypeet les propriétésResolutionOrderde l'objet AddressList pour afficher le type et l'ordre de résolution de chaque liste d'adresses retournée.
private void EnumerateAddressListsForStore()
{
Outlook.Folder currentFolder =
Application.ActiveExplorer().CurrentFolder
as Outlook.Folder;
Outlook.Store currentStore = currentFolder.Store;
List<Outlook.AddressList> addrListsForStore =
GetAddressLists(currentStore);
foreach (Outlook.AddressList addrList in addrListsForStore)
{
Debug.WriteLine(addrList.Name
+ " " + addrList.AddressListType.ToString()
+ " Resolution Order: " +
addrList.ResolutionOrder);
}
}
public List<Outlook.AddressList> GetAddressLists(Outlook.Store store)
{
List<Outlook.AddressList> addrLists =
new List<Microsoft.Office.Interop.Outlook.AddressList>();
string PR_EMSMDB_SECTION_UID =
@"http://schemas.microsoft.com/mapi/proptag/0x3D150102";
if (store == null)
{
throw new ArgumentNullException();
}
Outlook.PropertyAccessor oPAStore = store.PropertyAccessor;
string storeUID = oPAStore.BinaryToString(
oPAStore.GetProperty(PR_EMSMDB_SECTION_UID));
foreach (Outlook.AddressList addrList
in Application.Session.AddressLists)
{
Outlook.PropertyAccessor oPAAddrList =
addrList.PropertyAccessor;
string addrListUID = oPAAddrList.BinaryToString(
oPAAddrList.GetProperty(PR_EMSMDB_SECTION_UID));
// Return addrList if match on storeUID
// and type is olExchangeGlobalAddressList.
if (addrListUID == storeUID)
{
addrLists.Add(addrList);
}
}
return addrLists;
}