使用Interop.outlook和ews

问题描述:

我使用EWS搜索和显示电子邮件。但是,项目的最后一步是将特定消息保存为文件系统上的.msg文件。我知道这对于EWS来说是不可能的,所以我需要使用Interop.Outlook来完成这个任务。我的问题是:根据EWS提供的信息,找到Outlook消息的最佳方式是什么?我试图将通过EWS交换获得的Message.Id和ConversationId与Outlook的messageId关联起来,但迄今为止并未成功。使用Interop.outlook和ews

这是我目前的(失败),可找到的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过滤器的引用是为[属性] =值版本的属性名称;和用于@SQL版本的十六进制值。有人有一个很好的参考链接?

您可以使用ConvertIdType请求;见:https://msdn.microsoft.com/en-us/library/office/bb856559(v=exchg.140).aspx

有关MAPI属性及其DASL名称和属性标记值的列表,请参阅:https://msdn.microsoft.com/en-us/library/office/cc815517.aspx。尽管Outlook Spy也是一个很好的工具。