0

Outlook からすべてのメール アドレスのリストを取得しています。次のコードは機能します。しかし、約 320 の結果の後、断続的に次のエラーが表示され続けます。COM 例外が発生します。Microsoft Exchange が要求を処理できないようです

 System.Runtime.InteropServices.COMException was unhandled
      ErrorCode=-2147467259
      HResult=-2147467259
      Message=The operation failed.
      Source=Microsoft Outlook

例外と表示されているため、try catch ブロックを追加できません。この Com エラーを解決する方法はありますか?

    Dim oApp As New Outlook.Application
    Dim dal As AddressList
    dal = oApp.Session.GetGlobalAddressList()
    Dim addressentry As Outlook.AddressEntry
    Dim d As Outlook.ExchangeUser
    If Not dal Is Nothing Then


        For index = 1 To dal.AddressEntries.Count - 1 Step 1

                           addressentry = dal.AddressEntries(index)
            If addressentry.AddressEntryUserType = OlAddressEntryUserType.olExchangeUserAddressEntry Then

                d = addressentry.GetExchangeUser()
                Console.WriteLine("Count{0}  ", index.ToString())
                Console.WriteLine(String.Format("Name{0} email{1}", addressentry.Name, d.PrimarySmtpAddress))

            End If
        Next


    End If
    Console.ReadLine()
4

1 に答える 1

0

複数のドット表記を使用しています。ループに入る前に dal.AddressEntries の値をキャッシュします。

また、本当にGALのすべてのエントリをループする必要がありますか? GAL には何万ものエントリが存在する可能性があります。

残念ながら、Outlook は、アドレス一覧を操作するときに Table インターフェイスを公開しません。これは、メッセージ (MAPIFolder.GetTable) でのみ使用できます。Redemption を使用するオプションがある場合は、そのMAPITableオブジェクトを使用できます。これは、Outlook.AddressEntries オブジェクトで直接使用するか、RDOSession .AddressBook.GAL.AddressEntries.MAPITable.ExecSQL を使用して、すべてのアイテムから複数のプロパティを 1 つのアイテムで取得できます。電話。

于 2013-06-11T14:57:52.493 に答える