C# 使用Interop.outlook和ews

C# 使用Interop.outlook和ews,c#,outlook,interop,exchangewebservices,C#,Outlook,Interop,Exchangewebservices,我使用EWS搜索和显示电子邮件。但是,项目的最后一步是将特定消息保存为文件系统上的.msg文件。我知道这在EWS中是不可能的,所以我需要使用Interop.Outlook来实现这一点。我的问题是:鉴于EWS提供的信息,查找Outlook邮件的最佳方式是什么。我已尝试将通过EWS从exchange获得的Message.Id和ConversationId与Outlook的messageId相关联,但迄今为止未成功 以下是查找ConversationID的当前(失败)代码: OUTLOOK.Appl

我使用EWS搜索和显示电子邮件。但是,项目的最后一步是将特定消息保存为文件系统上的.msg文件。我知道这在EWS中是不可能的,所以我需要使用Interop.Outlook来实现这一点。我的问题是:鉴于EWS提供的信息,查找Outlook邮件的最佳方式是什么。我已尝试将通过EWS从exchange获得的Message.Id和ConversationId与Outlook的messageId相关联,但迄今为止未成功

以下是查找ConversationID的当前(失败)代码:

 OUTLOOK.Application olApp = new OUTLOOK.Application();
        OUTLOOK.NameSpace olNS = olApp.GetNamespace("MAPI");
        OUTLOOK.MAPIFolder oFolder = olNS.GetDefaultFolder(OUTLOOK.OlDefaultFolders.olFolderInbox);
        OUTLOOK.Items oItems = oFolder.Items;
        String sFilter = string.Format("@SQL=\"http://schemas.microsoft.com/mapi/proptag/0x1035001F\" = '{0}'", missive.ConversationID.UniqueId);
        object obj = oItems.Find(sFilter);
        OUTLOOK.MailItem oEmail = (OUTLOOK.MailItem)obj;
        if (oEmail != null)
        {
            return oEmail;
        }
        else
        {
            throw new Exception("MAIL ITEM NOT IN OUTLOOK");
        } 

另一方面:我正在寻找一个Outlookd过滤器的引用,它是[property]=值版本的属性名称;以及用于@SQL版本的十六进制值。是否有人有一个链接到一个很好的参考

您可以使用ConvertIdType请求;请参阅:

有关MAPI属性及其DASL名称和属性标记值的列表,请参阅:。尽管Outlook Spy也是一个很好的工具