EWS托管API:从" AllItems"获取时识别已删除的电子邮件夹

时间:2015-06-11 20:53:20

标签: c# exchangewebservices

我正在使用带有C#的EWS托管API来从用户帐户获取电子邮件。我正在收集来自" AllItems"的电子邮件。文件夹和获取不同的电子邮件属性,如subject,datetimesent等。

" AllItems"文件夹还包含已删除的电子邮件,并且包含在" DeletedItems"夹。我想确定是否删除了电子邮件(即它是在" DeletedItems"文件夹中),如果可能的话,删除电子邮件的时间。

以下是我正在使用的代码。我找不到可以识别电子邮件是否被删除的属性。

FolderView viewFolders = new FolderView(int.MaxValue) { Traversal = FolderTraversal.Deep, PropertySet = new PropertySet(BasePropertySet.IdOnly) };

ItemView viewEmails = new ItemView(int.MaxValue) { PropertySet = new PropertySet(BasePropertySet.IdOnly) };

SearchFilter folderFilter = new SearchFilter.IsEqualTo(FolderSchema.DisplayName, "AllItems");

FolderId rootFolderId = new FolderId(WellKnownFolderName.Root);

FindItemsResults<Item> findResults;

FindFoldersResults AllItemsFolder= service.FindFolders(WellKnownFolderName.Root, folderFilter, viewFolders);

if (AllItemsFolder.Count() > 0)//if we have AllItems folder
{
    foreach (Folder folder in AllItemsFolder.Folders)
    {
        ItemView itv = new ItemView(int.MaxValue);
        findResults = service.FindItems(folder.Id, itv);

        foreach (Item item in findResults)
        {
            if (item is EmailMessage)
            {
                MessageBox.Show(item.Subject);
                //  Show whether the message is in deleted folder and when message was deleted  
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

正如您所述,我不认为邮件中有这样的属性。

我会使用知名文件夹名"deleteditems" GetFolder 操作来获取该文件夹的ID。然后,我会忽略具有此Id作为ParentFolderId的所有邮件项目。