查询交换分发列表

时间:2015-07-23 12:05:53

标签: vb.net exchangewebservices

我试图找到一些我可以在vb.net 4.0中使用的代码来查询我们的Exchange 2013服务器。它将被放置在Web服务器上,并且该服务器上没有安装Outlook。看起来我需要使用EWS来做到这一点,但我已经尝试了很多代码片段,但仍然无法解决这个问题。我尝试查询的分发列表位于公共文件夹/ Office联系人中。我尝试过使用嵌套来浏览公共文件夹的示例,看到没有深度遍历,但我没有在那里做某事。我不发布代码,因为我不确定它会有所帮助。我希望有人已经这样做了,并会给我一些让我开始的最新信息。

我发现的示例不查询分发列表,而是添加到它。并非我没有尝试过......我已经尝试过多次来自不同地方的代码,但是我已经尝试过了。我没有完成它。无论如何..帮助会很棒。

很抱歉没有发布任何代码..我实际上认为我删除了这篇文章..但我发布了现在正在为我工​​作的代码。此代码对公用文件夹进行查询,然后获取有关该联系人列表中每个联系人的一些数据。

Public Sub MS()
    Dim oTheListS As New List(Of TheList)
    Dim service As New ExchangeService(ExchangeVersion.Exchange2010_SP1)
    service.Credentials = New WebCredentials("userid", "password")
    service.AutodiscoverUrl("email@address")

    'Get Public Folder
    Dim sf As SearchFilter = New SearchFilter.IsEqualTo(FolderSchema.DisplayName, "Office Contacts")
    Dim rrRes As FindFoldersResults = service.FindFolders(WellKnownFolderName.PublicFoldersRoot, sf, New FolderView(1))
    Dim OfficeContacts As Folder = rrRes.Folders(0)
    'Find the Distribution List
    Dim dlSearch As SearchFilter = New SearchFilter.IsEqualTo(ContactGroupSchema.DisplayName, "Merit Board")
    Dim ivItemView As New ItemView(1)
    Dim fiResults As FindItemsResults(Of Item) = OfficeContacts.FindItems(dlSearch, ivItemView)
    If fiResults.Items.Count = 1 Then
        'Enumeate Members
        Dim cg As ContactGroup = DirectCast(fiResults.Items(0), ContactGroup)
        cg.Load()
        For Each gm As GroupMember In cg.Members
            Dim o As New TheList
            o = MS2(gm.AddressInformation.Address)
            oTheListS.Add(o)
            'Dim o As New TheList

            'Dim ncCol As NameResolutionCollection = service.ResolveName(gm.AddressInformation.Address, ResolveNameSearchLocation.ContactsOnly, True)



            'With o
            '    .Name = gm.AddressInformation.Name
            '    .Email = gm.AddressInformation.Address
            'End With
            'oTheListS.Add(o)

        Next
    End If

End Sub

 Public Function MS2(pEmail As String) As TheList
    Dim o As New TheList
    Dim service As New ExchangeService(ExchangeVersion.Exchange2010_SP1)
    service.Credentials = New WebCredentials("userid", "password")
    service.AutodiscoverUrl("email@address")



    Dim sf As SearchFilter = New SearchFilter.IsEqualTo(FolderSchema.DisplayName, "Office Contacts")
    Dim rrRes As FindFoldersResults = service.FindFolders(WellKnownFolderName.PublicFoldersRoot, sf, New FolderView(1))
    Dim OfficeContacts As Folder = rrRes.Folders(0)
    'Find the Distribution List
    Dim dlSearch As SearchFilter = New SearchFilter.IsEqualTo(ContactSchema.EmailAddress1, pEmail)
    Dim ivItemView As New ItemView(1)
    Dim fiResults As FindItemsResults(Of Item) = OfficeContacts.FindItems(dlSearch, ivItemView)
    If fiResults.Items.Count = 1 Then

        Dim con As Contact = fiResults.Items(0)

        'Dim ncCol As NameResolutionCollection = service.ResolveName(gm.AddressInformation.Address, ResolveNameSearchLocation.ContactsOnly, True)

        With o
            If con.DisplayName IsNot Nothing Then
                .Name = con.DisplayName
            End If
            Dim em As New EmailAddress
            If con.EmailAddresses.TryGetValue(EmailAddressKey.EmailAddress1, em) = True Then
                .Email = con.EmailAddresses(EmailAddressKey.EmailAddress1).ToString
            End If
            If con.JobTitle IsNot Nothing Then
                .Title = con.JobTitle
            End If
            Dim phy As New PhysicalAddressEntry
            If con.PhysicalAddresses.TryGetValue(PhysicalAddressKey.Business, phy) = True Then
                .Address = con.PhysicalAddresses(PhysicalAddressKey.Business)
            End If

            If con.PhoneNumbers.TryGetValue(PhoneNumberKey.BusinessPhone, String.Empty) = True Then
                .PhoneBusiness = con.PhoneNumbers(PhoneNumberKey.BusinessPhone)
            End If
            If con.PhoneNumbers.TryGetValue(PhoneNumberKey.MobilePhone, String.Empty) = True Then
                .PhoneMobile = con.PhoneNumbers(PhoneNumberKey.MobilePhone)
            End If
            If con.CompanyName IsNot Nothing Then
                .Comapny = con.CompanyName
            End If


        End With
    End If
    Return o
End Function
Public Class TheList
    Public Property Name As String
    Public Property Email As String
    Public Property PhoneMobile As String
    Public Property PhoneBusiness As String
    Public Property Comapny As String
    Public Property Title As String
    Public Property Address As PhysicalAddressEntry



End Class

我刚刚开始工作,所以我还没有开始改进它......但希望这会帮助其他人,因为我没有找到任何代码来做到这一点

0 个答案:

没有答案