EWS将电子邮件从委托收件箱移动到委托文件夹

时间:2016-11-23 19:27:00

标签: email delegates exchangewebservices

我尝试使用EWS将电子邮件从委托收件箱移动到委托文件夹。

首先,我抓取代理inbox中的所有文件夹,以获取IdChangeKey属性(代替依赖名称)

<FindFolder Traversal='Shallow' xmlns='http://schemas.microsoft.com/exchange/services/2006/messages'>
    <FolderShape>
        <t:BaseShape>Default</t:BaseShape>
    </FolderShape>
    <ParentFolderIds>
        <t:DistinguishedFolderId Id='inbox'>
            <t:Mailbox>
                <t:EmailAddress>delegate.name@email.com</t:EmailAddress>
            </t:Mailbox>
        </t:DistinguishedFolderId>
    </ParentFolderIds>
</FindFolder>

接下来,我使用Id中找到的电子邮件的ChangeKeyinbox以及上面找到的文件夹的IdChangeKey来尝试移动

<m:MoveItem>
    <m:ToFolderId>
        <FolderId Id='folder.Id' ChangeKey='folder.ChangeKey'>
            <t:Mailbox>
                <t:EmailAddress>delegate.name@email.com</t:EmailAddress>
            </t:Mailbox>
        </FolderId>
    </m:ToFolderId>
    <m:ItemIds>
        <t:ItemId Id='email.Id' ChangeKey='email.ChangeKey' />
    </m:ItemIds>
</m:MoveItem>

对我来说,这会有效,但在查看文档后,<FolderId>元素不允许<t:Mailbox>个孩子。

<t:DistinguishedFolderId>允许<t:Mailbox>,但我只能从以前标识的文件夹列表中进行选择,而不是用户定义的文件夹。有没有办法告诉<MoveItem>电话,所有这些操作都发生在委托电子邮件中?

更新(工作):

<MoveItem xmlns='http://schemas.microsoft.com/exchange/services/2006/messages' xmlns:t='http://schemas.microsoft.com/exchange/services/2006/types'>
    <ToFolderId>
        <t:FolderId Id='folder.Id' ChangeKey='folder.ChangeKey' />
    </ToFolderId>
    <ItemIds>
        <t:ItemId Id='item.Id' ChangeKey='item.ChangeKey' />
    </ItemIds>
</MoveItem>

1 个答案:

答案 0 :(得分:1)

您从FindFolder请求中返回的FolderId都与委托邮箱有关(如果父代表被指定为您的示例)。 FolderId是全球唯一的(可以找到更多关于https://msdn.microsoft.com/en-us/library/office/dn605828(v=exchg.150).aspx的信息),因此您不需要指定要访问的邮箱,因为此信息包含在FolderId本身中。 DistinishedFolderId中存在邮箱元素的原因是,这允许您访问代理邮箱中的WellKnownFolders(无需进行任何其他请求)