Share via


Obtenir des informations sur plusieurs comptes

Microsoft Outlook prend en charge un profil qui contient un ou plusieurs comptes connectés à un ordinateur Microsoft Exchange Server. Cette rubrique montre comment obtenir et afficher des informations diverses sur chaque compte du profil actuel.

La méthode suivante, EnumerateAccounts, affiche le nom du compte, le nom d’utilisateur et l’adresse SMTP (Simple Mail Transfer Protocol) pour chaque compte défini dans le profil actuel. Si le compte est connecté à un serveur Exchange, EnumerateAccounts affiche le nom et les informations de version du serveur Exchange. Et si le compte réside dans un magasin de remise, EnumerateAccounts affiche le nom du magasin de remise par défaut pour le compte.

EnumerateAccounts accède à la plupart de ces informations à partir de l'objet Account , hormis lorsque l'objet Account ne contient pas d'informations relatives au nom d'utilisateur et à l'adresse SMTP. Dans ce cas, EnumerateAccounts utilise les objets AddressEntry et ExchangeUser . EnumerateAccounts obtient l’objet AddressEntry à l’aide de la propriété AddressEntry de l’objet Recipient obtenu à partir de la propriété Account.CurrentUser . EnumerateAccounts obtient l’objet ExchangeUser à l’aide de la méthode GetExchangeUser de l’objet AddressEntry . L'algorithme suivant sert à obtenir diverses informations à l'aide des objets Account, AddressEntry et ExchangeUser:

  • Si l’objet Account contient des informations sur le nom d’utilisateur et l’adresse SMTP, utilisez l’objet Account pour afficher le nom du compte, le nom d’utilisateur, l’adresse SMTP et le nom et les informations de version du serveur Exchange s’il s’agit d’un compte Exchange.

  • Autrement, l’objet Account ne contient pas d’informations sur le nom d’utilisateur et l’adresse SMTP ; dans ce cas, procédez comme suit :

    • S’il ne s’agit pas d’un compte Exchange, utilisez l’objet AddressEntry pour afficher le nom d’utilisateur et l’adresse SMTP.

    • Autrement, il s’agit d’un compte Exchange ; dans ce cas, procédez comme suit :

      1. Utilisez l’objet Account pour afficher le nom du compte, le nom du serveur Exchange et les informations de version Exchange.

      2. Utiliser l'objet ExchangeUser pour afficher le nom d'utilisateur et l'adresse SMTP.

Le code managé suivant est écrit dans C#. Pour exécuter un exemple de code managé .NET Framework qui doit appeler un modèle COM (Component Object Model), vous devez utiliser un assembly d’interopérabilité qui définit et mappe des interfaces managées avec des objets COM dans la bibliothèque de types de modèle objet. Pour Outlook, vous pouvez utiliser Visual Studio et l’assembly d’interopérabilité de base (PIA) d’Outlook. Avant d’exécuter des exemples de code managé pour Outlook 2013, assurez-vous que vous avez installé le PIA d’Outlook 2013 et que vous avez ajouté une référence au composant Bibliothèque d’objets Microsoft Outlook 15.0 dans Visual Studio.

Vous devez utiliser le code suivant dans la ThisAddIn classe d’un complément Outlook (à l’aide des Outils de développement Office pour Visual Studio). L'objet Application dans le code doit être un objet Application Outlook approuvé fourni par ThisAddIn.Globals. Pour plus d’informations sur l’utilisation de l’assembly PIA Outlook pour développer des solutions Outlook managées, consultez bienvenue dans la référence de l’assembly d’interopérabilité principal Outlook sur MSDN.

private void EnumerateAccounts() 
{ 
    Outlook.Accounts accounts = 
        Application.Session.Accounts; 
 
    // Enumerate each account defined in the current profile. 
    foreach (Outlook.Account account in accounts) 
    { 
        try 
        { 
            StringBuilder sb = new StringBuilder(); 
            sb.AppendLine("Account: " + account.DisplayName); 
 
            // If the account does not contain the SMTP address or 
            // user name, use the AddressEntry and ExchangeUser objects. 
            if (string.IsNullOrEmpty(account.SmtpAddress) 
                || string.IsNullOrEmpty(account.UserName)) 
            { 
                Outlook.AddressEntry oAE = 
                    account.CurrentUser.AddressEntry 
                    as Outlook.AddressEntry; 
 
                // If the account is an Exchange account, 
                // display also the Exchange server name and version. 
                if (oAE.Type == "EX") 
                { 
                    Outlook.ExchangeUser oEU = 
                        oAE.GetExchangeUser() 
                        as Outlook.ExchangeUser; 
  
                    // Use ExchangeUser object to display user name 
                    // and SMTP address. 
                    sb.AppendLine("UserName: " + 
                        oEU.Name); 
                    sb.AppendLine("SMTP: " + 
                        oEU.PrimarySmtpAddress); 
 
                    // Use Account object to display the Exchange 
                    // server name and version information. 
                    sb.AppendLine("Exchange Server: " + 
                        account.ExchangeMailboxServerName); 
                    sb.AppendLine("Exchange Server Version: " + 
                        account.ExchangeMailboxServerVersion);  
                } 
                // The account is not connected to an Exchange 
                // Server, use the AddressEntry object to display only  
                // the user name and SMTP address. 
                else 
                { 
                    sb.AppendLine("UserName: " + 
                        oAE.Name); 
                    sb.AppendLine("SMTP: " + 
                        oAE.Address); 
                } 
            } 
            // The account contains SMTP address and 
            // user name, then the Account object is sufficient.  
            else 
            { 
                sb.AppendLine("UserName: " + 
                    account.UserName); 
                sb.AppendLine("SMTP: " + 
                    account.SmtpAddress); 
 
                // If the account is an Exchange account, 
                // display also the Exchange server name and version. 
                if(account.AccountType ==  
                    Outlook.OlAccountType.olExchange) 
                { 
                    sb.AppendLine("Exchange Server: " + 
                        account.ExchangeMailboxServerName); 
                    sb.AppendLine("Exchange Server Version: " + 
                        account.ExchangeMailboxServerVersion);  
                } 
            } 
 
            // If the account is connected to a delivery store, 
            // display the store name as well. 
            if(account.DeliveryStore !=null) 
            { 
                sb.AppendLine("Delivery Store: " + 
                    account.DeliveryStore.DisplayName); 
            } 
            sb.AppendLine("---------------------------------"); 
            Debug.Write(sb.ToString()); 
        } 
        catch (Exception ex) 
        { 
            Debug.WriteLine(ex.Message); 
        } 
    } 
} 

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.