【问题标题】:C# Outlook AddIn - Determine EWS Item ID for the selected EmailC# Outlook 插件 - 确定所选电子邮件的 EWS 项目 ID
【发布时间】:2017-08-04 00:35:32
【问题描述】:

是否可以确定 MailItem(活动资源管理器中的选定项目)的 Exchange Server ItemID?我正在研究的解决方案有一个 Outlook 插件组件和另一个通过 EWS 访问邮件项目的组件。

我的 Outlook 插件中有类似于以下的代码:

Outlook.Explorer ActiveExplorer = Globals.ThisAddIn.Application.ActiveExplorer();
object selectedItem = ActiveExplorer.Selection[1];
Outlook.MailItem selectedEmail = selectedItem as Outlook.MailItem;

通过这种方式,我可以访问电子邮件的某些属性,但属性值与 EWS 返回的值完全相同,这对整体解决方案的运作很重要。例如,如果属性返回时间,则时间匹配到毫秒是很重要的。

如果我有 ItemID,我可以使用类似下面的方法绑定到该项目(从插件中)并使用它。

Item myItem = Item.Bind(MyExchangeService, MyItemID);

一时兴起,我尝试绑定到 MailItem.EntryID,但我收到了格式错误的 ID 错误(这并不让我感到惊讶)。我一直在尝试确定 Exchange ID 是否可以通过 MailItem.PropertyAccessor.GetProperty 获得,但我对以这种方式访问​​属性并不十分熟悉,到目前为止还没有任何运气。

想法?

【问题讨论】:

    标签: c# outlook-addin exchangewebservices exchange-server-2010


    【解决方案1】:

    我遇到了以下 Stack Overflow 帖子,该帖子并没有完全回答我的问题,而是将我的重点改为EntryID 转换为 EWS ID,而不是查找 EWS ID。

    Exchange ItemID differs from GlobalAppointmentID for Outlook AddIn

    通过这个新角度,我能够找到以下直接解决我的问题的网站。

    https://bernhardelbl.wordpress.com/2013/04/15/converting-entryid-to-ewsid-using-exchange-web-services-ews/

    我已在此处完整发布代码,以防链接损坏。

    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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-26
      • 1970-01-01
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多