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