Avatar of Anglian Learning Technical Services
Anglian Learning Technical Services

asked on 

Accessing user created Exchange 2011 calendars through Exchange Web Services (SOAP)

Hi,

I am trying to access a calendar hosted by Microsoft Exchange 2007 through Exchange Web Services.  To build up the SOAP request, I am using a class based on the work done here:

http://www.howtoforge.com/talking-soap-with-exchange

The PHP is all functioning exactly as expected, so this is not a PHP question.  Indeed, I am able to access the default user calender perfectly, by using the following construction:

---
$FindItem->Traversal = "Shallow";
$FindItem->ItemShape->BaseShape = "AllProperties";
$FindItem->ParentFolderIds->DistinguishedFolderId->Mailbox->EmailAddress = "user@domain.com";
$FindItem->ParentFolderIds->DistinguishedFolderId->Id = "calendar";
$result = $client->FindItem($FindItem);
---

However, the target I really want to access is not the default user calendar (using the special 'calendar' identifier), but an additional user created calendar (several, in fact).  This is the sort you can make in Outlook when you create a new folder of type calendar.

Doing this for user created mail folders is straight forward, as one can obtain an Id and ChangeKey from a FindFolder operation and plug it into the FindItem call, as below.

---
$FindItem->ParentFolderIds->FolderId->Id = "id_from_FindFolder_result"
$FindItem->ParentFolderIds->FolderId->ChangeKey = "ChangeKey_from_FindFolder_result"
---

If you run the FindFolder operation at root level (Top of Information Store), using Traversal = 'Deep', an exhaustive list of all mail folders will appear (and Notes too), but no calendar folders.

My question is...  How do I construct a FindFolder operation to include calendar folders?  As mentioned earlier, addressing the default user calendar is easy, what with the reserved Ids available, laid out by Microsoft at the links below.  I dare say I could address these calendars with FindItem, but need FindFolder to obtain the Id and ChangeKey to plug into it.

http://msdn.microsoft.com/en-us/library/aa563918(v=exchg.80).aspx

http://msdn.microsoft.com/en-us/library/aa580808(v=exchg.80).aspx


Any help would be most appreciated.  Do ask questions if I've not been clear enough.


Best wishes,

Richard
ExchangeWCF

Avatar of undefined
Last Comment
Anglian Learning Technical Services
ASKER CERTIFIED SOLUTION
Avatar of LeeDerbyshire
LeeDerbyshire
Flag of United Kingdom of Great Britain and Northern Ireland image

Blurred text
THIS SOLUTION IS ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
Avatar of LeeDerbyshire
LeeDerbyshire
Flag of United Kingdom of Great Britain and Northern Ireland image

BTW, you don't need the change key if you are just reading.
Avatar of Anglian Learning Technical Services
Anglian Learning Technical Services

ASKER

Thanks for the tip about the ChangeKey.  Are there any other PHP classes you can recommend that interface with EWS for these type of operations?
Avatar of LeeDerbyshire
LeeDerbyshire
Flag of United Kingdom of Great Britain and Northern Ireland image

I don't know, sorry - I only use VB.Net.  How about the author of the class?  Do they give contact details?

Do you get any calendar folders returned if you try a Shallow traversal on msgfolderroot ?
Thanks Lee.  You set me on the right course.  I was referencing the result too far down the tree.

I was looking at:

$result->ResponseMessages->FindFolderResponseMessage->RootFolder->Folders->Folder;

When, for a calendar, I should have been looking at:

$result->ResponseMessages->FindFolderResponseMessage->RootFolder->Folders->CalendarFolder;

Thanks very much,
Lee set me on the right track
Exchange
Exchange

Exchange is the server side of a collaborative application product that is part of the Microsoft Server infrastructure. Exchange's major features include email, calendaring, contacts and tasks, support for mobile and web-based access to information, and support for data storage.

213K
Questions
--
Followers
--
Top Experts
Get a personalized solution from industry experts
Ask the experts
Read over 600 more reviews

TRUSTED BY

IBM logoIntel logoMicrosoft logoUbisoft logoSAP logo
Qualcomm logoCitrix Systems logoWorkday logoErnst & Young logo
High performer badgeUsers love us badge
LinkedIn logoFacebook logoX logoInstagram logoTikTok logoYouTube logo