共用方式為


取得多個帳戶的相關信息

Outlook 支援包含一或多個連線至 Exchange Server 帳戶的配置檔。 此範例示範如何取得並顯示目前配置檔中每個帳戶的相關其他資訊。

範例

下列方法 (EnumerateAccounts) 會顯示目前設定檔中所定義之每個帳戶的帳戶名稱、使用者名稱,以及簡易郵件傳送通訊協定 (SMTP) 位址。 如果帳戶連線到 Exchange 伺服器,則 EnumerateAccounts 會顯示 Exchange 伺服器名稱及版本資訊。 而且,如果帳戶位於傳送存放區,則 EnumerateAccounts 會顯示帳戶之預設傳送存放區的名稱。

EnumerateAccounts 會從 Account 物件中存取大部分這些資訊,除非 Account 物件不包含使用者名稱及 SMTP 地址的相關資訊。 在該情況下,EnumerateAccounts 會使用 AddressEntryExchangeUser 物件。

EnumerateAccounts 會使用從 CurrentUser 屬性取得之 Recipient 物件的 AddressEntry 屬性來取得 AddressEntry 物件。 EnumerateAccounts 會使用 AddressEntry 物件的 GetExchangeUser () 方法來取得 ExchangeUser 物件。

下列是使用 Account、AddressEntry 及 ExchangeUser 物件來取得各種資訊的演算法:

  • 如果 Account 物件包含使用者名稱及 SMTP 地址的相關資訊,請使用 Account 物件來顯示帳戶名稱、使用者名稱、SMTP 地址,以及 Exchange 伺服器名稱及版本資訊 (如果帳戶是 Exchange 帳戶)。

  • 如果 Account 物件不包含使用者名稱和 SMTP 位址的相關信息,請繼續進行,如下所示:

    • 如果帳戶不是 Exchange 帳戶,請使用 AddressEntry 物件來顯示使用者名稱及 SMTP 地址。

    • 如果帳戶是 Exchange 帳戶,請繼續進行,如下所示:

      1. 使用 Account 物件來顯示帳戶名稱、Exchange 伺服器名稱及 Exchange 版本資訊。

      2. 使用 ExchangeUser 物件來顯示使用者名稱及 SMTP 地址。

If you use Visual Studio to test this code example, you must first add a reference to the Microsoft Outlook 15.0 Object Library component and specify the Outlook variable when you import the Microsoft.Office.Interop.Outlook namespace. The using statement must not occur directly before the functions in the code example but must be added before the public Class declaration. The following line of code shows how to do the import and assignment in C#.

using Outlook = Microsoft.Office.Interop.Outlook;
private void EnumerateAccounts()
{
    Outlook.Accounts accounts =
        Application.Session.Accounts;
    foreach (Outlook.Account account in accounts)
    {
        try
        {
            StringBuilder sb = new StringBuilder();
            sb.AppendLine("Account: " + account.DisplayName);
            if (string.IsNullOrEmpty(account.SmtpAddress)
                || string.IsNullOrEmpty(account.UserName))
            {
                Outlook.AddressEntry oAE =
                    account.CurrentUser.AddressEntry
                    as Outlook.AddressEntry;
                if (oAE.Type == "EX")
                {
                    Outlook.ExchangeUser oEU =
                        oAE.GetExchangeUser()
                        as Outlook.ExchangeUser;
                    sb.AppendLine("UserName: " +
                        oEU.Name);
                    sb.AppendLine("SMTP: " +
                        oEU.PrimarySmtpAddress);
                    sb.AppendLine("Exchange Server: " +
                        account.ExchangeMailboxServerName);
                    sb.AppendLine("Exchange Server Version: " +
                        account.ExchangeMailboxServerVersion); 
                }
                else
                {
                    sb.AppendLine("UserName: " +
                        oAE.Name);
                    sb.AppendLine("SMTP: " +
                        oAE.Address);
                }
            }
            else
            {
                sb.AppendLine("UserName: " +
                    account.UserName);
                sb.AppendLine("SMTP: " +
                    account.SmtpAddress);
                if(account.AccountType == 
                    Outlook.OlAccountType.olExchange)
                {
                    sb.AppendLine("Exchange Server: " +
                        account.ExchangeMailboxServerName);
                    sb.AppendLine("Exchange Server Version: " +
                        account.ExchangeMailboxServerVersion); 
                }
            }
            if(account.DeliveryStore !=null)
            {
                sb.AppendLine("Delivery Store: " +
                    account.DeliveryStore.DisplayName);
            }
            sb.AppendLine("---------------------------------");
            Debug.Write(sb.ToString());
        }
        catch (Exception ex)
        {
            Debug.WriteLine(ex.Message);
        }
    }
}

另請參閱