2010-11-24 5 views
6

이 사이트를 기반으로 응용 프로그램을 구축 http://msdn.microsoft.com/en-us/library/dd633661%28v=EXCHG.80%29.aspxC#에서 EWS로 일정 항목을 만드는 방법, 결과를 얻는 방법?

나는 XML 결과를 반환 할 수있는 방법을
appointment.Subject = "Status Meeting"; 
appointment.Body = "The purpose of this meeting is to discuss status."; 
appointment.Start = new DateTime(2009, 3, 1, 9, 0, 0); 
appointment.End = appointment.Start.AddHours(2); 
appointment.Location = "Conf Room"; 
appointment.RequiredAttendees.Add("[email protected]"); 
appointment.RequiredAttendees.Add("[email protected]"); 
appointment.OptionalAttendees.Add("[email protected]"); 
appointment.Save(SendInvitationsMode.SendToAllAndSaveCopy); 

"... <톤 : 항목 Id 아이디 ="AAMkADk = "ChangeKey ="DwAAAB "/> ..." 그래서 나중에 일정 항목을 삭제하거나 편집 할 때 사용할 수 있습니다!

마이크로 소프트는 프레임 워크 전체로 하나님의 일자리를 만들었지 만, 그들은이 작은 일을 정말로 잊었을까요?

문제를 해결하기 위해이 방법을 사용해야합니까 (일부 논리적 인 해결책이 없음) 해결책을 http://blogs.msdn.com/b/exchangedev/archive/2010/02/25/determining-the-id-of-a-sent-message-by-using-extended-properties-with-the-ews-managed-api.aspx 발견 했습니까?

환호

그것은 당신이, persay를 XML 결과를 반환하지 않습니다있는 솔루션과 같은

답변

5

. 해결책은 전자 메일에 고유 식별자를 ExtendedPropertyDefinition으로 추가하는 것입니다. 그런 다음 솔루션은 보낸 후 "보낸 편지함"폴더를 검색하여 전자 메일을 보내기 전에 추가 된 고유 식별자를 일치시켜 방금 보낸 전자 메일의 저장된 복사본을 찾습니다. 블로그에 작성 그런 다음

,

다음은 이 위의 코드 예제에서 호출 FindItems에 의해 생성되는 XML 요청입니다.

<m:FindItem Traversal="Shallow"> 
    <m:ItemShape> 
     <t:BaseShape>IdOnly</t:BaseShape> 
     <t:AdditionalProperties> 
     <t:FieldURI FieldURI="item:Subject" /> 
     <t:ExtendedFieldURI PropertySetId="20b5c09f-7cad-44c6-bdbf-8fcbeea08544" PropertyName="MyExtendedPropertyName" PropertyType="String" /> 
     </t:AdditionalProperties> 
    </m:ItemShape> 
    <m:IndexedPageItemView MaxEntriesReturned="5" Offset="0" BasePoint="Beginning" /> 
    <m:Restriction> 
     <t:IsEqualTo> 
     <t:ExtendedFieldURI PropertySetId="20b5c09f-7cad-44c6-bdbf-8fcbeea08544" PropertyName="MyExtendedPropertyName" PropertyType="String" /> 
     <t:FieldURIOrConstant> 
      <t:Constant Value="MyExtendedPropertyValue" /> 
     </t:FieldURIOrConstant> 
     </t:IsEqualTo> 
    </m:Restriction> 
    <m:ParentFolderIds> 
     <t:DistinguishedFolderId Id="sentitems" /> 
    </m:ParentFolderIds> 
</m:FindItem> 

참고 고유 식별자를 포함하는 XML 태그입니다.

<t:ExtendedFieldURI PropertySetId="20b5c09f-7cad-44c6-bdbf-8fcbeea08544" PropertyName="MyExtendedPropertyName" PropertyType="String" /> 
+0

감사합니다. 그래서 그것을 어떻게 이해할 수 있습니다. itemID와 ChangeKey를 얻으려면 어떻게해야합니까? 내가 "약속"저장 후. 저장 (SendInvitationsMode.SendToAllAndSaveCopy); ? –

+0

이 링크를 참조하십시오. - http://blogs.msdn.com/b/exchangedev/archive/2010/03/16/loading-properties-for-multiple-items-with-one-call-to-exchange- web-services.aspx. EWS는 "웹 서비스"이며 서비스 요청의 결과가 일련 번호로 (즉, 요청한대로 XML로) 처리된다는 점에 유의하십시오. – bitxwise

7

나는 점을 누락 될 수 있지만 당신이 얻을 수있는 저장 한 후 내가이 약속의 고유 ID입니다 생각을 appointment.Id. 어딘가에 저장하고 나중에 편집을 위해 다시 약속을 액세스 할 수 있습니다 또는 함께 삭제 :

: 같은 원래을 설정하는 데 사용되는 속성 다음 문제를 값을 변경할 수 있습니다 그 후

Appointment appointment = Appointment.Bind(service, new ItemID("saved id value")); 

또는

appointment.Update(ConflictResolutionMode.AlwaysOverwrite); 
삭제할 : 당신은 전혀 XML에 액세스 할 필요가 없습니다

appointment.Delete(DeleteMode.HardDelete); 

.

(당신이 그들을 만들 수 있지만 N.B. 지금까지 내가, 업데이트 또는 공용 폴더의 일정에서 약속을 삭제할 수 없습니다 알 수 있습니다.)

0

다른 방법은 당신의 행동 후 개체를로드하는 것입니다. 그러나 이전에 말했듯이, 당신은 Appointment.Id를 사용할 수 있습니다.