Abrufen von Informationen für mehrere Konten

Microsoft Outlook unterstützt ein Profil, das ein oder mehrere Konten enthält, die mit einem Computer mit Microsoft Exchange Server verbunden sind. In diesem Thema wird gezeigt, wie Verschiedene Informationen zu den einzelnen Konten im aktuellen Profil abgerufen und angezeigt werden.

Die folgende Methode zeigt EnumerateAccountsden Kontonamen, den Benutzernamen und die SMTP-Adresse (Simple Mail Transfer Protocol) für jedes Konto an, das im aktuellen Profil definiert ist. Wenn das Konto mit einem Exchange-Server verbunden ist, EnumerateAccounts werden der Exchange-Servername und die Versionsinformationen angezeigt. Wenn sich das Konto ferner in einem Zustellungsspeicher befindet, zeigt EnumerateAccounts den Namen des Standardzustellungsspeichers für das Konto an.

EnumerateAccounts greift auf die meisten dieser Informationen über das Account -Objekt zu, es sei denn das Account-Objekt enthält keinerlei Informationen über den Benutzernamen und die SMTP-Adresse. In diesem Fall EnumerateAccounts verwendet die Objekte AddressEntry und ExchangeUser . EnumerateAccounts ruft das AddressEntry-Objekt mithilfe der AddressEntry-Eigenschaft des Recipient-Objekts ab, das von der Account.CurrentUser-Eigenschaft abgerufen wird. EnumerateAccounts ruft das ExchangeUser -Objekt mithilfe der GetExchangeUser -Methode des AddressEntry -Objekts ab. Im Folgenden finden Sie den Algorithmus zum Abrufen verschiedener Informationen mithilfe der Objekte Account, AddressEntry und ExchangeUser:

  • Wenn das Account -Objekt Informationen zum Benutzernamen und der SMTP-Adresse enthält, verwenden Sie das Account -Objekt zum Anzeigen des Kontonamens, des Benutzernamens, der SMTP-Adresse sowie des Namens des Servercomputers mit Exchange und der Versionsinformationen, wenn das Konto ein Exchange-Konto ist.

  • Andernfalls, wenn das Account -Objekt keine Informationen zum Benutzernamen und der SMTP-Adresse enthält, gehen Sie wie folgt vor:

    • Wenn es sich bei dem Konto nicht um ein Exchange-Konto handelt, zeigen Sie den Benutzernamen und die SMTP-Adresse mithilfe des AddressEntry -Objekts an.

    • Andernfalls, wenn das Konto ein Exchange-Konto ist, gehen Sie wie folgt vor:

      1. Verwenden Sie das Account -Objekt, um den Kontonamen, den Namen des Servercomputers mit Exchange sowie die Exchange-Versionsinformationen anzuzeigen.

      2. Verwenden Sie das ExchangeUser -Objekt, um den Benutzernamen und die SMTP-Adresse anzuzeigen.

Der folgende verwaltete Code ist in C# geschrieben. Um ein verwaltetes Codebeispiel von .NET Framework auszuführen, das ein Component Object Model (COM) aufrufen muss, müssen Sie eine Interopassembly verwenden, die verwaltete Schnittstellen definiert und den COM-Objekten in der Object Model-Typbibliothek zuordnet. Für Outlook können Sie Visual Studio und die Outlook Primary Interop Assembly (PIA) verwenden. Stellen Sie sicher, dass Sie die Outlook 2013 PIA installiert und eine Referenz zur Microsoft Outlook 15.0-Objektbibliothekkomponente in Visual Studio hinzugefügt haben, bevor Sie verwaltete Codebeispiele für Outlook 2013 ausführen.

Sie sollten den folgenden Code in der ThisAddIn Klasse eines Outlook-Add-Ins verwenden (mit Office Developer Tools für Visual Studio). Das Objekt der Anwendung im Code muss ein vertrauenswürdiges Outlook- Anwendungsobjekt sein, das von ThisAddIn.Globals bereitgestellt wird. Weitere Informationen zur Verwendung der Outlook-PIA zur Entwicklung verwalteter Outlook-Lösungen finden Sie auf MSDN unter Willkommen bei der Referenz zur primären Interopassembly von Outlook (PIA).

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); 
        } 
    } 
} 

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.