PR_SEARCH_KEY使用EWS

我需要使用EWS为某些邮件提取PR_SEARCH_KEY 。 我之前使用的是Outlook API。 但我想在EWS中重写完整的代码,因为它function强大。

旧代码:

private String GetLnksForMailBoxMails(Outlook.MailItem mail) { const string PR_SEARCH_KEY = "http://schemas.microsoft.com/mapi/proptag/0x300B0102"; Outlook.PropertyAccessor pa = mail.PropertyAccessor; String searchKey = pa.BinaryToString(pa.GetProperty(PR_SEARCH_KEY)); // Console.WriteLine("Here is lnks for normal mail box:{0} ", searchKey); return searchKey; } 

新代码:

 ExtendedPropertyDefinition eDef = new ExtendedPropertyDefinition(0x300B, MapiPropertyType.Binary); PropertySet prop = BasePropertySet.IdOnly; prop.Add(eDef); ItemView ivItemView = new ItemView(5000); ivItemView.PropertySet = prop; 

但是我无法获得String值。

它是一个二进制属性所以你会得到的是一个二进制数组,如果你想得到相同的hex字符串,就像在OOM中只是使用一些ilke

  ExtendedPropertyDefinition eDef = new ExtendedPropertyDefinition(0x300B, MapiPropertyType.Binary); PropertySet prop = BasePropertySet.IdOnly; prop.Add(eDef); ItemView ivItemView = new ItemView(1000); ivItemView.PropertySet = prop; FindItemsResults fiResults = Inbox.FindItems(ivItemView); foreach (Item itItem in fiResults) { Byte[] PropVal; String HexSearchKey; if (itItem.TryGetProperty(eDef, out PropVal)) { HexSearchKey = BitConverter.ToString(PropVal).Replace("-", ""); Console.WriteLine(HexSearchKey); } } 

干杯格伦