0

필자가 작성한 사용자 지정 헤더가있는 특정 전자 메일에 대한 전자 메일 폴더를 쿼리하려고합니다. 하지만 내가 만드는 SOAP 메시지에는 몇 가지 문제가있는 것처럼 보입니다. 항상 빈 결과 집합을 반환합니다.X 헤더로 폴더 쿼리 MS Exchange

나는 그 폴더에 이메일을 가지고 있다고 확신한다. 제한 부분을 제거한 후 쿼리하면 쿼리 결과에서 전자 메일을 볼 수 있습니다. Thunderbird를 사용하여 내 계정에 연결하면 헤더가 있음을 알 수 있습니다.

필자는 적어도 일주일 이상 지금까지 검색 한 결과, 찾을 수있는 유일한 결과는 https://social.msdn.microsoft.com/Forums/exchange/en-US/8db4b750-d92f-489b-8282-d109d33314ff/using-finditem-request-to-find-the-items-with-given-header-value이며 결국에는 구현이 제대로 작동한다고 알립니다.

읽어 주셔서 감사합니다. 나는 또한 extendedfielduri 년대에 추가 AllProperties 기본 모양으로 서버 내 헤더를 조회하려고하면

QUERY

<?xml version="1.0"?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"> 
    <soap:Header> 
    <t:RequestServerVersion Version="Exchange2010"/> 
    </soap:Header> 
    <soap:Body> 
    <FindItem xmlns="http://schemas.microsoft.com/exchange/services/2006/messages" Traversal="Shallow"> 
     <ItemShape> 
<t:BaseShape>Default</t:BaseShape> 
     </ItemShape> 
     <m:Restriction> 
<t:IsEqualTo> 
    <t:ExtendedFieldURI DistinguishedPropertySetId="InternetHeaders" PropertyName="X-My-Header" PropertyType="String"/> 
    <t:FieldURIOrConstant> 
    <t:Constant Value="44A2F930-5E24-4F18-BC82-EC6B3A02E893"/> 
    </t:FieldURIOrConstant> 
</t:IsEqualTo> 
     </m:Restriction> 
     <m:ParentFolderIds> 
<t:FolderId Id="AQMkADAwATM0MDAAMS1jMzg1LWZkMDMtMDACLTAwCgAuAAADlxvq+JrhgkiMcRwVFQDzo9MBANxoXUHEHORLhWKXuo92RaUAAAIBDwAAAA=="/> 
     </m:ParentFolderIds> 
    </FindItem> 
    </soap:Body> 
</soap:Envelope> 

응답

<?xml version="1.0" encoding="utf-8"?> 
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
    <s:Header> 
    <h:ServerVersionInfo xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" MajorVersion="15" MinorVersion="20" MajorBuildNumber="178" MinorBuildNumber="14" Version="V2017_07_11"/> 
    </s:Header> 
    <s:Body> 
    <m:FindItemResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"> 
<m:ResponseMessages> 
    <m:FindItemResponseMessage ResponseClass="Success"> 
    <m:ResponseCode>NoError</m:ResponseCode> 
    <m:RootFolder TotalItemsInView="0" IncludesLastItemInRange="true"> 
     <t:Items/> 
    </m:RootFolder> 
    </m:FindItemResponseMessage> 
</m:ResponseMessages> 
    </m:FindItemResponse> 
    </s:Body> 
</s:Envelope> 

, 그럼 내가 응답 내 헤더를 얻을 .

QUERY

<?xml version="1.0"?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"> 
    <soap:Header> 
    <t:RequestServerVersion Version="Exchange2010"/> 
    </soap:Header> 
    <soap:Body> 
    <GetItem xmlns="http://schemas.microsoft.com/exchange/services/2006/messages"> 
     <ItemShape> 
<t:BaseShape>AllProperties</t:BaseShape> 
<t:AdditionalProperties> 
    <t:ExtendedFieldURI DistinguishedPropertySetId="InternetHeaders" PropertyName="X-My-Header" PropertyType="String"/> 
</t:AdditionalProperties> 
     </ItemShape> 
     <ItemIds> 
<t:ItemId Id="AQMkADAwATM0MDAAMS1jMzg1LWZkMDMtMDACLTAwCgBGAAADlxvq+JrhgkiMcRwVFQDzo9MHANxoXUHEHORLhWKXuo92RaUAAAIBDwAAANxoXUHEHORLhWKXuo92RaUAAS8MrxcAAAA="/> 
     </ItemIds> 
    </GetItem> 
    </soap:Body> 
</soap:Envelope> 

응답 (부분) 나는 또한 내 쿼리에 동일한 매개 변수를 추가하는 일을하거나하지 않습니다 있는지 확인하기 위해 노력이 후

<t:DateTimeReceived>2017-10-25T07:55:56Z</t:DateTimeReceived> 
<t:Size>11803</t:Size> 
<t:Importance>Normal</t:Importance> 
<t:IsSubmitted>false</t:IsSubmitted> 
<t:IsDraft>true</t:IsDraft> 
<t:IsFromMe>false</t:IsFromMe> 
<t:IsResend>false</t:IsResend> 
<t:IsUnmodified>false</t:IsUnmodified> 
<t:InternetMessageHeaders> 
    <t:InternetMessageHeader HeaderName="Subject">Test</t:InternetMessageHeader> 
    <t:InternetMessageHeader HeaderName="Mime-Version">1.0 (Mac OS X Mail 11.0 \(3445.1.7\))</t:InternetMessageHeader> 
    <t:InternetMessageHeader HeaderName="Content-Type">text/html</t:InternetMessageHeader> 
    <t:InternetMessageHeader HeaderName="X-Apple-Base-Url">x-msg://1/</t:InternetMessageHeader> 
    <t:InternetMessageHeader HeaderName="X-Universally-Unique-Identifier">44A2F930-5E24-4F18-BC82-EC6B3A02E893</t:InternetMessageHeader> 
    <t:InternetMessageHeader HeaderName="X-Apple-Mail-Remote-Attachments">YES</t:InternetMessageHeader> 
    <t:InternetMessageHeader HeaderName="X-Apple-Windows-Friendly">1</t:InternetMessageHeader> 
    <t:InternetMessageHeader HeaderName="Date">Wed, 25 Oct 2017 09:55:56 +0200</t:InternetMessageHeader> 
    <t:InternetMessageHeader HeaderName="X-My-Header">44A2F930-5E24-4F18-BC82-EC6B3A02E893</t:InternetMessageHeader> 
    <t:InternetMessageHeader HeaderName="Content-Transfer-Encoding">quoted-printable</t:InternetMessageHeader> 
    <t:InternetMessageHeader HeaderName="Message-Id">&lt;[email protected]&gt;</t:InternetMessageHeader> 
    <t:InternetMessageHeader HeaderName="X-Uniform-Type-Identifier">com.apple.mail-draft</t:InternetMessageHeader> 
</t:InternetMessageHeaders> 
<t:DateTimeSent>2017-10-25T07:55:56Z</t:DateTimeSent> 
<t:DateTimeCreated>2017-10-25T07:55:56Z</t:DateTimeCreated> 
<t:ResponseObjects> 
    <t:ForwardItem/> 

. 그러나 운이 없다. 다음 쿼리는 첫 번째 쿼리와 정확히 동일한 응답을 반환했습니다.

<t:ExtendedFieldURI DistinguishedPropertySetId="InternetHeaders" PropertyName="X-My-Header" PropertyType="StringArray"/> 

또한

나는 당신에게 단지 제안 할 필요가 코드에서, 그래서 QUERY

<?xml version="1.0"?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"> 
    <soap:Header> 
    <t:RequestServerVersion Version="Exchange2010"/> 
    </soap:Header> 
    <soap:Body> 
    <FindItem xmlns="http://schemas.microsoft.com/exchange/services/2006/messages" Traversal="Shallow"> 
     <ItemShape> 
<t:BaseShape>AllProperties</t:BaseShape> 
<t:AdditionalProperties> 
    <t:ExtendedFieldURI DistinguishedPropertySetId="InternetHeaders" PropertyName="X-My-Header" PropertyType="String"/> 
</t:AdditionalProperties> 
     </ItemShape> 
     <m:Restriction> 
<t:IsEqualTo> 
    <t:ExtendedFieldURI DistinguishedPropertySetId="InternetHeaders" PropertyName="X-My-Header" PropertyType="String"/> 
    <t:FieldURIOrConstant> 
    <t:Constant Value="44A2F930-5E24-4F18-BC82-EC6B3A02E893"/> 
    </t:FieldURIOrConstant> 
</t:IsEqualTo> 
     </m:Restriction> 
     <m:ParentFolderIds> 
<t:FolderId Id="AQMkADAwATM0MDAAMS1jMzg1LWZkMDMtMDACLTAwCgAuAAADlxvq+JrhgkiMcRwVFQDzo9MBANxoXUHEHORLhWKXuo92RaUAAAIBDwAAAA=="/> 
     </m:ParentFolderIds> 
    </FindItem> 
    </soap:Body> 
</soap:Envelope> 

답변

1

모든 인터넷 헤더는 일반 문자열이어야한다 EWS가 가능한지 확인하려고 노력하십시오. 당신은 당신이 표시되지 않는 경우 귀하의 재산은 다음 제한이 작동하지 않습니다 항목 반환

<?xml version="1.0"?> 
 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"> 
 
    <soap:Header> 
 
    <t:RequestServerVersion Version="Exchange2010"/> 
 
    </soap:Header> 
 
    <soap:Body> 
 
    <FindItem xmlns="http://schemas.microsoft.com/exchange/services/2006/messages" Traversal="Shallow"> 
 
     <ItemShape> 
 
<t:BaseShape>Default</t:BaseShape> 
 
    <t:AdditionalProperties> 
 
      <t:ExtendedFieldURI DistinguishedPropertySetId="InternetHeaders" PropertyName="X-My-Header" PropertyType="String"/> 
 
      </t:AdditionalProperties> 
 
     </ItemShape> 
 
     <m:ParentFolderIds> 
 
<t:FolderId Id="AQMkADAwATM0MDAAMS1jMzg1LWZkMDMtMDACLTAwCgAuAAADlxvq+JrhgkiMcRwVFQDzo9MBANxoXUHEHORLhWKXuo92RaUAAAIBDwAAAA=="/> 
 
     </m:ParentFolderIds> 
 
    </FindItem> 
 
    </soap:Body> 
 
</soap:Envelope>

추가 속성 등으로 머리글 돌아갑니다. 일반적으로 X- 헤더를 사용하여 https://msdn.microsoft.com/en-us/library/office/dn596091(v=exchg.150).aspx을 프로비저닝해야하는 경우 MFCMapi 나 OutlookSpy와 같은 Mapi Editor로 항목을 볼 때 별도의 확장 속성으로 표시해야합니다.

+0

죄송합니다. 시험판에서 코드를 복사했지만 PropertyType에 사용할 수있는 모든 옵션을 시도했지만 운이 없었습니다. 나는 그 자체가 이메일을 질의 할 때 값이 반환되는지 테스트 할 것이다. – gkaykck

+0

제안 사항과 함께 질문을 업데이트했습니다. 슬프게도 문제는 여전히 존재합니다. – gkaykck

+0

https://msdn.microsoft.com/en-us/library/office/dn596091(v=exchg.150).aspx를 사용하여 헤더 구축을 시도 했습니까? 그 다음에 그 헤더로 수신 된 새로운 메시지를 처리해야합니다 (예 : 헤더가 명명 된 속성에 매핑되고 메시지의 추가 속성으로 사용 가능할 때) –

관련 문제