Home > Backend Development > Golang > Exchange Web Services - Find all unread messages using soap xml request

Exchange Web Services - Find all unread messages using soap xml request

WBOY
Release: 2024-02-12 21:30:08
forward
765 people have browsed it

Exchange Web 服务 - 使用soap xml 请求查找所有未读消息

php editor Baicao is here to introduce to you a method of using Exchange Web services to find all unread messages by using SOAP XML requests. Exchange Web Services is an API for communicating with Exchange Server, which provides the ability to access and manage email, calendar, contacts, and more. By using SOAP XML requests, we can send a request to the Exchange Server and get the data returned. In this post, we will detail how to use SOAP XML requests to find all unread messages.

Question content

In my application, I need to query the echange web service server and find all unread messages. I'm using golang and I'm sending soap xml request. I tried the following:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"
    xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header>
        <t:RequestServerVersion Version="Exchange2013_SP1" />
    </soap:Header>
    <soap:Body>
        <m:FindItem
            Traversal="Shallow">
            <m:ItemShape>
                <t:BaseShape>IdOnly</t:BaseShape>
            </m:ItemShape>
            <m:Restriction>
                <t:IsEqualTo>
                    <t:FieldURI FieldURI="item:IsRead" />
                    <t:FieldURIOrConstant>
                        <t:Constant Value="false" />
                    </t:FieldURIOrConstant>
                </t:IsEqualTo>
            </m:Restriction>
            <m:ParentFolderIds>
                <t:DistinguishedFolderId Id="inbox" />
            </m:ParentFolderIds>
        </m:FindItem>
    </soap:Body>
</soap:Envelope>
Copy after login

But in this case I get an error message indicating that my request is incorrect. If I delete <t:isequalto>, I get all the messages in my inbox. Any ideas on how to fix it would be welcome. Thank you

Solution

According to the fielduri attribute list, item:isread should be message:isread. Below is the equality filter from ews

<t:IsEqualTo>
  <t:FieldURI FieldURI="message:IsRead" />
  <t:FieldURIOrConstant>
    <t:Constant Value="false" />
  </t:FieldURIOrConstant>
</t:IsEqualTo>
Copy after login

The above is the detailed content of Exchange Web Services - Find all unread messages using soap xml request. For more information, please follow other related articles on the PHP Chinese website!

source:stackoverflow.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template