使用 SOAP 消息从 Exchange Web 服务使用 GetFolder 操作获取特定电子邮件的文件夹列表
Get folder List for a particular email using GetFolder operation from Exchange Web Service using SOAP Message
我正在使用 SOAPUI 进行测试。我们有一个链接到多个收件箱的服务帐户。我正在使用 Exchange Web 服务的 GetFolder 操作,指定带有电子邮件 ID 的请求 Header。似乎 EWS 忽略了 Soap header 中提供的电子邮件 ID,只返回默认收件箱(我在 header 中提供共享收件箱,连接到身份验证中使用的服务帐户)。
请帮助确定我的请求是否正确,或者我是否需要指定一些标志以确保可以根据我的请求访问我的共享收件箱?
这是示例请求。
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
<soap:Header>
<t:ConnectingSID>
<!--You have a CHOICE of the next 4 items at this level-->
<t:PrincipalName>mysharedinbox@mydomain.com</t:PrincipalName>
<t:PrimarySmtpAddress>mysharedinbox@mydomain.com</t:PrimarySmtpAddress>
<t:SmtpAddress>mysharedinbox@mydomain.com</t:SmtpAddress>
</t:ConnectingSID>
</soap:Header>
<soap:Body>
<FindFolder Traversal="Shallow" xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">
<FolderShape>
<t:BaseShape>Default</t:BaseShape>
</FolderShape>
<ParentFolderIds>
<t:DistinguishedFolderId Id="msgfolderroot"/>
</ParentFolderIds>
</FindFolder>
</soap:Body>
</soap:Envelope>
如果服务帐户可以访问相关邮箱,那么您需要使用 DistinguishedFolderId 的邮箱 child 节点来指定您要访问的邮箱,例如
<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" />
</soap:Header>
<soap:Body>
<m:GetFolder>
<m:FolderShape>
<t:BaseShape>AllProperties</t:BaseShape>
</m:FolderShape>
<m:FolderIds>
<t:DistinguishedFolderId Id="inbox"><t:Mailbox><t:EmailAddress>mailbox@domain.com</t:EmailAddress></t:Mailbox></t:DistinguishedFolderId>
</m:FolderIds>
</m:GetFolder>
</soap:Body>
</soap:Envelope>
您唯一会使用 ConnectingSID 的情况是在您使用 EWS 模拟(您拥有这些权利的情况下)并且您的模拟 header 应该看起来像
<soap:Header>
<t:ExchangeImpersonation>
<t:ConnectingSID>
<t:PrimarySmtpAddress>alisa@contoso.com</t:PrimarySmtpAddress>
</t:ConnectingSID>
</t:ExchangeImpersonation>
</soap:Header>
我正在使用 SOAPUI 进行测试。我们有一个链接到多个收件箱的服务帐户。我正在使用 Exchange Web 服务的 GetFolder 操作,指定带有电子邮件 ID 的请求 Header。似乎 EWS 忽略了 Soap header 中提供的电子邮件 ID,只返回默认收件箱(我在 header 中提供共享收件箱,连接到身份验证中使用的服务帐户)。 请帮助确定我的请求是否正确,或者我是否需要指定一些标志以确保可以根据我的请求访问我的共享收件箱?
这是示例请求。
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
<soap:Header>
<t:ConnectingSID>
<!--You have a CHOICE of the next 4 items at this level-->
<t:PrincipalName>mysharedinbox@mydomain.com</t:PrincipalName>
<t:PrimarySmtpAddress>mysharedinbox@mydomain.com</t:PrimarySmtpAddress>
<t:SmtpAddress>mysharedinbox@mydomain.com</t:SmtpAddress>
</t:ConnectingSID>
</soap:Header>
<soap:Body>
<FindFolder Traversal="Shallow" xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">
<FolderShape>
<t:BaseShape>Default</t:BaseShape>
</FolderShape>
<ParentFolderIds>
<t:DistinguishedFolderId Id="msgfolderroot"/>
</ParentFolderIds>
</FindFolder>
</soap:Body>
</soap:Envelope>
如果服务帐户可以访问相关邮箱,那么您需要使用 DistinguishedFolderId 的邮箱 child 节点来指定您要访问的邮箱,例如
<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" />
</soap:Header>
<soap:Body>
<m:GetFolder>
<m:FolderShape>
<t:BaseShape>AllProperties</t:BaseShape>
</m:FolderShape>
<m:FolderIds>
<t:DistinguishedFolderId Id="inbox"><t:Mailbox><t:EmailAddress>mailbox@domain.com</t:EmailAddress></t:Mailbox></t:DistinguishedFolderId>
</m:FolderIds>
</m:GetFolder>
</soap:Body>
</soap:Envelope>
您唯一会使用 ConnectingSID 的情况是在您使用 EWS 模拟(您拥有这些权利的情况下)并且您的模拟 header 应该看起来像
<soap:Header>
<t:ExchangeImpersonation>
<t:ConnectingSID>
<t:PrimarySmtpAddress>alisa@contoso.com</t:PrimarySmtpAddress>
</t:ConnectingSID>
</t:ExchangeImpersonation>
</soap:Header>