0

Ich möchte meine E-Mail-Ordner nach bestimmten E-Mails mit benutzerdefinierten Headern abfragen, die ich auf sie geschrieben habe. Aber es scheint, dass die SOAP-Nachricht, die ich erstelle, einige Probleme hat, es wiederholt immer leere Ergebnismenge.Ordner mit X-Headern abfragen MS Exchange

Ich bin sicher, dass ich die E-Mail im Ordner habe. Wenn ich nach dem Entfernen des Restriktionsteils abfrage, kann ich die E-Mail in den Abfrageergebnissen sehen. Und wenn ich mich mit meinem Konto mit sagen wir Thunderbird verbinden, dann kann ich sehen, dass die Kopfzeile dort ist.

Ich habe seit mindestens einer Woche gesucht, und das einzige Ergebnis, das ich finden konnte, ist, 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, die am Ende nur sagt mir, meine Umsetzung sollte funktionieren.

Danke fürs Lesen.

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> 

RESPONSE

<?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> 

Wenn ich auch den Server mit AllProperties Grundform und mein Kopf Abfrage versuchen, hinzugefügt extendedfielduri der, dann bekomme ich meine Header in Reaktion . arbeiten oder nicht

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> 

RESPONSE (Partial)

<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/> 

Danach habe ich versucht, auch, wenn das Hinzufügen der gleichen Parameter zu meiner Anfrage zu sehen. Aber kein Glück. Die folgende Abfrage gab genau die gleiche Antwort wie die erste zurück.

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> 

Antwort

1

Alle Internet-Header sollten blanke Saiten sein, so in Ihrem Code

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

brauchen würde

Auch sein würde ich Ihnen nur vorschlagen Beginnen Sie mit dem Versuch zu sehen, ob EWS wird kehren Sie als zusätzliche Eigenschaft zB Header-

<?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>

Wenn Sie nicht sehen Sie dieses Objekt mit dem Artikel zurückgegeben, dann wird eine Beschränkung nicht. Im Allgemeinen müssen sie bei X-Headern https://msdn.microsoft.com/en-us/library/office/dn596091(v=exchg.150).aspx bereitgestellt werden. Sie sollten sie dann als separate Extended-Eigenschaft sehen, wenn Sie das Element mit einem Mapi-Editor wie MFCMapi oder OutlookSpy betrachten.

+0

Entschuldigung, dass ich den Code aus meinen Versuchen kopiert habe, habe ich jede verfügbare Option für PropertyType versucht, aber kein Glück. Ich werde testen, ob der Wert zurückgegeben wird, wenn ich die E-Mail selbst abfrage. – gkaykck

+0

Ich habe die Frage mit Ihren Vorschlägen aktualisiert. Leider ist das Problem immer noch da. – gkaykck

+0

Haben Sie versucht, die Kopfzeile mithilfe von https://msdn.microsoft.com/en-us/library/office/dn596091(v=exchg.150).aspx bereitzustellen? Es sollte dann mit allen neuen Nachrichten funktionieren, die mit diesem Header empfangen wurden (zB nachdem der Header einer benannten Eigenschaft zugeordnet wurde und als zusätzliche Eigenschaft in der Nachricht verfügbar sein wird). –

Verwandte Themen