Synchronizing Mailboxes (Exchange Web Services)
Topic Last Modified: 2007-11-01
You can use Exchange Web Services to synchronize items between a computer that is running Microsoft Exchange Server 2007 and the client.
Example
This example shows you how to use the SyncFolderItems Operation to synchronize items.
static void SyncItems(string syncState)
{
// Create service binding.
ExchangeServiceBinding esb = new ExchangeServiceBinding();
esb.Credentials = new NetworkCredential("username", "password", "domain");
esb.Url = @"https://CAS01.example.com/EWS/exchange.asmx";
// Create the synchronize items request.
SyncFolderItemsType syncItemsRequest = new SyncFolderItemsType();
// Specify the properties to synchronize.
syncItemsRequest.ItemShape = new ItemResponseShapeType();
syncItemsRequest.ItemShape.BaseShape = DefaultShapeNamesType.Default;
// Specify the folder to synchronize.
syncItemsRequest.SyncFolderId = new TargetFolderIdType();
DistinguishedFolderIdType drafts = new DistinguishedFolderIdType();
drafts.Id = DistinguishedFolderIdNameType.drafts;
syncItemsRequest.SyncFolderId.Item = drafts;
// Specify the synchronization state if this is not the first attempt to
// synchronize the client and the Exchange server.
if (syncState.Length != 0)
{
syncItemsRequest.SyncState = syncState;
}
// Specify the number of items to return.
syncItemsRequest.MaxChangesReturned = 20;
try
{
// Send the request and get the response.
SyncFolderItemsResponseType syncItemsResponse = esb.SyncFolderItems(syncItemsRequest);
SyncFolderItemsResponseMessageType responseMessage = new SyncFolderItemsResponseMessageType();
responseMessage = syncItemsResponse.ResponseMessages.Items[0] as SyncFolderItemsResponseMessageType;
// Determine whether the request was a success.
if (responseMessage.ResponseClass == ResponseClassType.Error)
{
throw new Exception(responseMessage.MessageText);
}
else
{
string changes = responseMessage.Changes.Items.Length.ToString();
Console.WriteLine("Number of items to synchronize: " + changes);
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
<?xml version="1.0" encoding="utf-8" ?>
<SyncFolderItems xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ItemShape xmlns="https://schemas.microsoft.com/exchange/services/2006/messages">
<BaseShape xmlns="https://schemas.microsoft.com/exchange/services/2006/types">Default</BaseShape>
</ItemShape>
<SyncFolderId xmlns="https://schemas.microsoft.com/exchange/services/2006/messages">
<DistinguishedFolderId Id="drafts" xmlns="https://schemas.microsoft.com/exchange/services/2006/types" />
</SyncFolderId>
<MaxChangesReturned xmlns="https://schemas.microsoft.com/exchange/services/2006/messages">20</MaxChangesReturned>
</SyncFolderItems>
<?xml version="1.0" encoding="utf-8" ?>
<SyncFolderItemsResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ResponseMessages xmlns="https://schemas.microsoft.com/exchange/services/2006/messages">
<SyncFolderItemsResponseMessage ResponseClass="Success">
<ResponseCode>NoError</ResponseCode>
<SyncState>H4sIAAAA=</SyncState>
<IncludesLastItemInRange>true</IncludesLastItemInRange>
<Changes>
<Create xmlns="https://schemas.microsoft.com/exchange/services/2006/types">
<Message>
<ItemId Id="AAAlAFVzA" ChangeKey="CQAAfYAD" />
<Subject>Test</Subject>
<Sensitivity>Normal</Sensitivity>
<Size>879</Size>
<DateTimeSent>2006-10-27T23:20:39Z</DateTimeSent>
<DateTimeCreated>2006-10-27T23:39:03Z</DateTimeCreated>
<HasAttachments>false</HasAttachments>
<From>
<Mailbox>
<Name>User1</Name>
<EmailAddress>User1@example.com</EmailAddress>
<RoutingType>SMTP</RoutingType>
</Mailbox>
</From>
<IsRead>true</IsRead>
</Message>
</Create>
<Create xmlns="https://schemas.microsoft.com/exchange/services/2006/types">
<Message>
<ItemId Id="AAAlAFVz" ChangeKey="CQAY+Z" />
<Subject>Project Action</Subject>
<Sensitivity>Normal</Sensitivity>
<Size>484</Size>
<DateTimeSent>2006-11-02T23:49:31Z</DateTimeSent>
<DateTimeCreated>2006-11-02T23:49:31Z</DateTimeCreated>
<HasAttachments>false</HasAttachments>
<From>
<Mailbox>
<Name>User1</Name>
<EmailAddress>User1@example.com</EmailAddress>
<RoutingType>SMTP</RoutingType>
</Mailbox>
</From>
<IsRead>true</IsRead>
</Message>
</Create>
</Changes>
</SyncFolderItemsResponseMessage>
</ResponseMessages>
</SyncFolderItemsResponse>
The SyncState and item identifiers have been shortened to preserve readability.