Hi,
I've a problem. I need to retrieve all contacts stored in a public folder in the ms exchange 2003 server in VB.NET or C#.
Anyone can tell me a way to do it or some example ?
Thank you.
Hi,
I've a problem. I need to retrieve all contacts stored in a public folder in the ms exchange 2003 server in VB.NET or C#.
Anyone can tell me a way to do it or some example ?
Thank you.
I just struggled for 2 days to solve this same problem for my company--except I'm using PHP. Your job should be a bit easier since all the official examples are in VBScript, VB, VB.NET, C#, or C++.
I would direct you to the Microsoft WebDAV Reference wth code examples. Click "Exchange Store WebDAV Protocol", then explore the Methods from there.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/e2k3/e2k3/wss_references_webdav.asp
In dealing with Contacts, you'll also find this reference helpful--it lists all the Exchange "person" properties and their schema type.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/e2k3/e2k3/_exch2k_urn_content-classes_person.asp
I have documented my PHP solution. It's brand new and works, but no doubt I'll be improving and expanding it as time goes by. Notice my last code example is "Search for contacts that match a certain criteria". This example is close to what you want to do. Although my code is PHP, the actual WebDAV XML query is the same as you need--and that's the trickiest part of WebDAV.
http://www.troywolf.com/articles/php/exchange_webdav_examples.php
'Article from MSDN
'http://msdn.microsoft.com/en-us/library/aa168022(office.11).aspx
' Create Outlook application.
Dim oApp As Outlook.Application = New Outlook.Application
' Get namespace and Contacts folder reference.
Dim oNS As Outlook.NameSpace = oApp.GetNamespace("MAPI")
'Set MAPI folder to a location
Dim cContacts As Outlook.MAPIFolder = oNS.Folders("Public Folders").Folders("All Public Folders").Folders("Contacts")
' Dim collection
Dim oItems As Outlook.Items = cContacts.Items
Console.Write(oItems.Count)
Dim i As Int16 = 0
For Each item In oItems
Try
Dim oCt As Outlook.ContactItem
oCt = item
Console.WriteLine(i.ToString + " - " + oCt.FullName)
i = i + 1
'Need to release Oct because it craps out at 247 records with the following error
'Your server administrator has limited the number of items you can open simultaneously.
'Try closing messages you have opened or removing attachments and images from unsent
'messages you are composing
System.Runtime.InteropServices.Marshal.ReleaseComObject(oCt)
Catch ex As ExecutionEngineException
MsgBox(ex.Message)
End Try
Next
End Sub
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.