C# Outlook 加载项 - 确定所选电子邮件的 EWS 项目 ID
C# Outlook AddIn - Determine EWS Item ID for the selected Email
是否可以确定 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 错误(这并不让我感到惊讶)。我一直在尝试确定 Exchange ID 是否可以通过 MailItem.PropertyAccessor.GetProperty 获得,但我并不真正熟悉以这种方式访问属性,并且到目前为止还没有任何运气。
想法?
我遇到了以下 Stack Overflow post,它并没有完全回答我的问题,而是将我的注意力转移到 converting the EntryID into EWS ID 而不是寻找EWS ID。
Exchange ItemID differs from GlobalAppointmentID for Outlook AddIn
通过这个新角度,我找到了以下直接解决我问题的网站。
我已经 post 完整地编辑了这里的代码,以防 link 被破坏。
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;
}
是否可以确定 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 错误(这并不让我感到惊讶)。我一直在尝试确定 Exchange ID 是否可以通过 MailItem.PropertyAccessor.GetProperty 获得,但我并不真正熟悉以这种方式访问属性,并且到目前为止还没有任何运气。
想法?
我遇到了以下 Stack Overflow post,它并没有完全回答我的问题,而是将我的注意力转移到 converting the EntryID into EWS ID 而不是寻找EWS ID。
Exchange ItemID differs from GlobalAppointmentID for Outlook AddIn
通过这个新角度,我找到了以下直接解决我问题的网站。
我已经 post 完整地编辑了这里的代码,以防 link 被破坏。
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;
}