Obter informações para várias contas

O Microsoft Outlook dá suporte a um perfil que contém uma ou mais contas conectadas a um Microsoft Exchange Server. Este tópico mostra como obter e exibir informações diversas sobre cada conta no perfil atual.

O método a seguir, EnumerateAccounts, exibe o nome da conta, o nome de usuário e o endereço SMTP (Simple Mail Transfer Protocol) para cada conta definida no perfil atual. Se a conta estiver conectada a um servidor do Exchange, EnumerateAccounts exibirá o nome do servidor do Exchange e as informações da versão. E se a conta residir em um repositório de entregas, EnumerateAccounts exibirá o nome do repositório de entrega padrão da conta.

EnumerateAccounts acessa a maioria dessas informações do objeto Account , exceto quando o objeto Account não contém informações sobre o nome de usuário e o endereço SMTP. Nesse caso, EnumerateAccounts usa os objetos AddressEntry e ExchangeUser . EnumerateAccounts obtém o objeto AddressEntry usando a propriedade AddressEntry do objeto Destinatário obtida da propriedade Account.CurrentUser . EnumerateAccounts obtém o objeto ExchangeUser usando o método GetExchangeUser do objeto AddressEntry . O algoritmo a seguir é usado para obter várias informações com os objetos Account, AddressEntry e ExchangeUser:

  • Se o objeto Account contiver informações sobre o nome de usuário e o endereço SMTP, use o objeto Account para exibir o nome da conta, o nome de usuário e o endereço SMTP, além de informações sobre a versão e o nome do servidor do Exchange, caso se trate de uma conta do Exchange.

  • Caso contrário, o objeto Account não conterá informações sobre o nome de usuário e o endereço SMTP; continue da seguinte maneira:

    • Se a conta não for uma conta do Exchange, use o objeto AddressEntry para exibir o nome de usuário e o endereço SMTP.

    • Caso contrário, a conta será uma conta do Exchange; continue da seguinte maneira:

      1. Use o objeto Account para exibir o nome da conta, o nome do servidor do Exchange e as informações da versão do Exchange.

      2. Use o objeto ExchangeUser para exibir o nome de usuário e endereço SMTP.

The following managed code is written in C#. To run a .NET Framework managed code sample that needs to call into a Component Object Model (COM), you must use an interop assembly that defines and maps managed interfaces to the COM objects in the object model type library. For Outlook, you can use Visual Studio and the Outlook Primary Interop Assembly (PIA). Before you run managed code samples for Outlook 2013, ensure that you have installed the Outlook 2013 PIA and have added a reference to the Microsoft Outlook 15.0 Object Library component in Visual Studio.

Você deve usar o código a ThisAddIn seguir na classe de um suplemento do Outlook (usando ferramentas de desenvolvedor do Office para Visual Studio). The Application object in the code must be a trusted Outlook Application object provided by ThisAddIn.Globals. For more information about using the Outlook PIA to develop managed Outlook solutions, see the Outlook 2013 Primary Interop Assembly Reference on 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); 
        } 
    } 
} 

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.