필자가 작성한 사용자 지정 헤더가있는 특정 전자 메일에 대한 전자 메일 폴더를 쿼리하려고합니다. 하지만 내가 만드는 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"><[email protected]></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>
죄송합니다. 시험판에서 코드를 복사했지만 PropertyType에 사용할 수있는 모든 옵션을 시도했지만 운이 없었습니다. 나는 그 자체가 이메일을 질의 할 때 값이 반환되는지 테스트 할 것이다. – gkaykck
제안 사항과 함께 질문을 업데이트했습니다. 슬프게도 문제는 여전히 존재합니다. – gkaykck
https://msdn.microsoft.com/en-us/library/office/dn596091(v=exchg.150).aspx를 사용하여 헤더 구축을 시도 했습니까? 그 다음에 그 헤더로 수신 된 새로운 메시지를 처리해야합니다 (예 : 헤더가 명명 된 속성에 매핑되고 메시지의 추가 속성으로 사용 가능할 때) –