the example code updated the calendar in exchange server 2007(or Later) by web services method.
1
private static WebApplication2.EWS.ExchangeServiceBinding ExchangeSevicesBinding()
2
{
3
WebApplication2.EWS.ExchangeServiceBinding binding = new WebApplication2.EWS.ExchangeServiceBinding();
4
binding.Credentials = new System.Net.NetworkCredential("username", "password", "domain");
5
binding.Url = https://mail.abc.com/ews/exchange.asmx;
6
return binding;
7
}
8
9
10
public static ItemIdType UpdateMessageBody()
11
{
12
ExchangeServiceBinding binding = ExchangeSevicesBinding();
13
14
UpdateItemType request = new UpdateItemType();
15
16
request.ConflictResolution = ConflictResolutionType.AutoResolve;
17
18
request.MessageDisposition = MessageDispositionType.SaveOnly;
19
20
request.MessageDispositionSpecified = true;
21
22
// Let's create our item that will hold the changed body. Remember,
23
24
// we can only set a single property for each change description.
25
26
//
27
28
MessageType myMessage = new MessageType();
29
30
myMessage.Body = new BodyType();
31
32
myMessage.Body.BodyType1 = BodyTypeType.Text;
33
34
myMessage.Body.Value = "update calendar event";
35
36
// Now, create our change description using our handy overloaded constructor
37
CalendarItemType calendarItemTypeItem = GetCalenderItem();
38
39
//
40
update Attendees
58
59
60
update body
71
72
update body
93
94
// The change description lives within an ItemChange
95
//
96
ItemChangeType itemChange = new ItemChangeType();
97
98
itemChange.Item = calendarItemTypeItem.ItemId;
99
100
itemChange.Updates = new ItemChangeDescriptionType[] { setItem };
101
102
// Now set our single item change on the request
103
//
104
request.ItemChanges = new ItemChangeType[] { itemChange };
105
request.SendMeetingInvitationsOrCancellationsSpecified = true;
106
request.SendMeetingInvitationsOrCancellations = CalendarItemUpdateOperationType.SendOnlyToChanged;
107
UpdateItemResponseType response = binding.UpdateItem(request);
108
109
// UpdateItem gives us back ItemInfoResponseMessageType instances.
110
// All it gives us, however, is the id of the item.
111
//
112
ItemInfoResponseMessageType responseMessage =
113
114
response.ResponseMessages.Items[0] as ItemInfoResponseMessageType;
115
116
if (responseMessage.ResponseCode == ResponseCodeType.NoError)
117
{
118
119
return responseMessage.Items.Items[0].ItemId;
120
121
}
122
123
else
124
{
125
126
throw new Exception("Error trying to update the item: ResponseCode: " +
127
128
responseMessage.ResponseCode);
129
130
}
131
132
}
133
public static CalendarItemType GetCalenderItem()
134
{
135
WebApplication2.EWS.ExchangeServiceBinding binding = ExchangeSevicesBinding();
136
137
138
CalendarViewType calendarView = CreateCalendarViewForToday(DateTime.Now, DateTime.Now.AddHours(8));
139
140
// Prepare the Find Item Request
141
//
142
FindItemType findItemRequest = new FindItemType();
143
144
// Set the ID(s) of the Find Item Request to be the Distinguished
145
// Folder, 'calendar'.
146
//
147
findItemRequest.ParentFolderIds = new DistinguishedFolderIdType[] { new DistinguishedFolderIdType() };
148
((DistinguishedFolderIdType)findItemRequest.ParentFolderIds[0]).Id =
149
DistinguishedFolderIdNameType.calendar;
150
151
findItemRequest.Traversal = ItemQueryTraversalType.Shallow;
152
153
// Prepare an Item shape type that defines how the items in view will be
154
// returned. This could easily be extended with additional properties to
155
// be supplied by the caller
156
//
157
ItemResponseShapeType itemShapeDefinition = new ItemResponseShapeType();
158
itemShapeDefinition.BaseShape = DefaultShapeNamesType.AllProperties;
159
160
findItemRequest.ItemShape = itemShapeDefinition;
161
findItemRequest.Item = calendarView;
162
163
// Send the request via the Exchange Service Binding
164
FindItemResponseType findItemResponse =
165
binding.FindItem(findItemRequest);
166
167
// Verify that the FindItem request was successfull
168
if (findItemResponse.ResponseMessages.Items[0].ResponseClass !=
169
ResponseClassType.Success)
170
{
171
// Indicate that we have a problem
172
throw new Exception(String.Format(
173
"Unable to get calendar view\r\n{0}\r\n{1}",
174
findItemResponse.ResponseMessages.Items[0].ResponseCode,
175
findItemResponse.ResponseMessages.Items[0].MessageText));
176
}
177
178
FindItemResponseMessageType findItemResponseMessage =
179
(FindItemResponseMessageType)findItemResponse.
180
ResponseMessages.Items[0];
181
ArrayOfRealItemsType findItemResponseItems =
182
(ArrayOfRealItemsType)findItemResponseMessage.RootFolder.Item;
183
for (int x = 0;
184
x < findItemResponseMessage.RootFolder.TotalItemsInView;
185
x++)
186
{
187
188
return (CalendarItemType)findItemResponseItems.Items[x];
189
190
}
191
return null;
192
193
}
you must special attention to the red bold text .
if you update other item in exchange server,you can consult the follow xml style.
2 <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
4 xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
5 xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
6 <soap:Body>
7 <UpdateItem MessageDisposition="SaveOnly" ConflictResolution="AutoResolve"
8 xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">
9 <ItemChanges>
10 <t:ItemChange>
11 <t:ItemId Id="AAAtAEFkbW
" ChangeKey="CQAAABYA
"/>12 <t:Updates>
13 <t:AppendToItemField>
14 <t:FieldURI FieldURI="item:Body"/>
15 <t:Message>
16 <t:Body BodyType="Text">Some additional text to append</t:Body>
17 </t:Message>
18 </t:AppendToItemField>
19 </t:Updates>
20 </t:ItemChange>
21 </ItemChanges>
22 </UpdateItem>
23 </soap:Body>
24 </soap:Envelope>
25