是否可以确定MailItem的Exchange Server ItemID(活动资源管理器中的选定项)?我正在处理的解决方案有一个Outlook AddIn组件和另一个通过EWS访问邮件项目的组件。
我的Outlook插件中的代码类似于以下代码:
Outlook.Explorer ActiveExplorer = Globals.ThisAddIn.Application.ActiveExplorer();
object selectedItem = ActiveExplorer.Selection[1];
Outlook.MailItem selectedEmail = selectedItem as Outlook.MailItem;
通过这种方式,我可以访问电子邮件的某些属性,但整体解决方案的工作方式非常重要,因为属性值与EWS返回的属性值完全相同。例如,如果属性返回了一个时间,那么匹配时间到毫秒是很重要的。
如果我有ItemID,我可以使用类似下面的内容绑定并使用Item(在插件中)。
Item myItem = Item.Bind(MyExchangeService, MyItemID);
我一时兴起尝试绑定到MailItem.EntryID但我收到了错误的ID错误(这并没有让我感到惊讶)。我一直在尝试通过MailItem.PropertyAccessor.GetProperty确定Exchange ID是否可用,但我并不熟悉以这种方式访问属性并且到目前为止还没有运气。
思想?
答案 0 :(得分:2)
我遇到了以下Stack Overflow帖子,该帖子没有完全回答我的问题,但我将注意力转移到将 EntryID转换为EWS ID,而不是找到EWS ID。
Exchange ItemID differs from GlobalAppointmentID for Outlook AddIn
通过这个新的角度,我能够找到以下直接解决我的问题的网站。
我已经完整地发布了这里的代码,以防链接被破坏。
string ConvertHexEntryIdToEwsId(ExchangeService esb, string sID, string strSMTPAdd)
{
AlternateId objAltID = new AlternateId();
objAltID.Format = IdFormat.HexEntryId;
objAltID.Mailbox = strSMTPAdd;
objAltID.UniqueId = sID;
AlternateIdBase objAltIDBase = esb.ConvertId(objAltID, IdFormat.EwsId);
AlternateId objAltIDResp = (AlternateId)objAltIDBase;
return objAltIDResp.UniqueId;
}