次の方法で共有


複数のアカウントの情報を取得する

Microsoft Outlook では、Microsoft Exchange Serverに接続されている 1 つ以上のアカウントを含むプロファイルがサポートされています。 このトピックでは、現在のプロファイル内の各アカウントに関するその他の情報を取得して表示する方法について説明します。

次のメソッドは、 EnumerateAccounts現在のプロファイルで定義されている各アカウントのアカウント名、ユーザー名、および簡易メール転送プロトコル (SMTP) アドレスを表示します。 アカウントが Exchange サーバーに接続されている場合は、 EnumerateAccounts Exchange サーバーの名前とバージョン情報が表示されます。 また、アカウントが配信ストアに存在する場合は、 EnumerateAccounts アカウントの既定の配信ストアの名前が表示されます。

EnumerateAccounts Account オブジェクトに ユーザー名と SMTP アドレスに関する情報が含まれていない場合を除き、この情報のほとんどは Account オブジェクトからアクセスします。 その場合は、 EnumerateAccountsAddressEntry オブジェクトと ExchangeUser オブジェクトを 使用します。 EnumerateAccountsAccount.CurrentUser プロパティから取得した Recipient オブジェクトの AddressEntry プロパティを使用して AddressEntry オブジェクトを取得します。 EnumerateAccountsAddressEntry オブジェクトの GetExchangeUser メソッドを使用して ExchangeUser オブジェクトを取得します。 AccountAddressEntry、および ExchangeUser オブジェクトを使用して、各種の情報を取得するアルゴリズムは次のとおりです。

  • ユーザー名と SMTP アドレスに関する情報が Account オブジェクトに含まれている場合は、 Account オブジェクトを使用してアカウント名、ユーザー名、SMTP アドレス、および Exchange サーバー名とバージョン情報 (アカウントが Exchange アカウントの場合) を表示します。

  • Account オブジェクトにユーザー名と SMTP アドレスに関する情報は含まれていない場合は、次の手順を実行します。

    • アカウントが Exchange アカウントではない場合は、 AddressEntry オブジェクトを使用してユーザー名と SMTP アドレスを表示します。

    • アカウントが Exchange アカウントの場合は、次の手順を実行します。

      1. Account オブジェクトを使用してアカウント名、Exchange サーバー名、および Exchange バージョン情報を表示します。

      2. ExchangeUser オブジェクトを使用してユーザー名と SMTP アドレスを表示します。

次のマネージ コードは C# で作成されています。 コンポーネント オブジェクト モデル (COM) に呼び出す必要がある .NET Framework マネージ コード サンプルを実行するには、マネージ インターフェイスを定義し、オブジェクト モデル タイプ ライブラリの COM オブジェクトにマップする相互運用機能アセンブリを使用する必要があります。 Outlook の場合、Visual Studio および Outlook プライマリ相互運用機能アセンブリ (PIA) を使用できます。 Outlook 2013 用のマネージ コード サンプルを実行する前に、Outlook 2013 PIA をインストールしており、Visual Studio で Microsoft Outlook 15.0 オブジェクト ライブラリ コンポーネントへの参照を追加していることを確認してください。

Outlook アドインのクラスで次のコードを ThisAddIn 使用する必要があります (Office Developer Tools for Visual Studio を使用)。 コードの Application オブジェクトは で提供された、信頼済み Outlook ThisAddIn.Globals オブジェクトである必要があります。 Outlook PIA を使用してマネージド Outlook ソリューションを開発する方法の詳細については、MSDN の 「Outlook プライマリ相互運用機能アセンブリ リファレンスへようこそ」を参照 してください。

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

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。