【问题标题】:How can I obtain the original (Exchange) folder UniqueID in Outlook PlugIn (VSTO)?如何获取 Outlook 插件 (VSTO) 中的原始 (Exchange) 文件夹 UniqueID?
【发布时间】:2017-05-25 15:52:25
【问题描述】:

在花了几个小时试图回答我的问题后,我决定是时候就 SO 提出一个问题了,因为也许有人知道我可以从哪个 MAPI 属性中获取此信息。

但让我们从头开始 - 我正在用 C# 为 Outlook 2013 / 2016 编写一个 VSTO 插件;在这个插件的某个地方,我得到了当前商店中的文件夹列表,一切正常——对于每个文件夹,我都有一个条目 ID 和其他属性;我的大问题是 - 我如何才能获得文件夹或项目(电子邮件)该项目在服务器上的原始 ID(对于使用 EWS 的人是文件夹的 FolderId.UniqueId) - 很可能这些信息存在于某处在可以使用 PropertyAccessor 访问的 MAPI 隐藏属性中。

根据我目前所读到的,有几千个 MAPI 属性可用于 Outlook 项目/文件夹,但我不知道哪些是与 Exchange 相关的。

非常感谢您提供任何线索。

【问题讨论】:

    标签: c# outlook vsto office-interop


    【解决方案1】:

    您的意思是对来自 Exchange Server 的每个项目使用唯一 ID,而不是来自本地 Outlook 应用程序。你可以考虑使用

    EntryID:https://msdn.microsoft.com/en-us/library/office/ff866458.aspx

    我试图发表评论,但是随着公司合并我们搬到了一个新的域,我在这里有了一个新的电子邮件地址和一个新的 ID,声誉又从零开始了!

    【讨论】:

    • 这是在将对象添加到商店时由 Outlook 创建的条目 ID,这不是我要查找的内容。我需要的是来自交换服务器的独特之处。
    【解决方案2】:

    在获得一些其他帖子的线索后,似乎我正在寻找的内容称为“将 VSTO EntryID 转换为 EWS ID”(至少这是我在 Google 上搜索的内容:-)。

    长话短说,我在多个网站上找到了解决方案,但可以在这里找到正确的解决方案:

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

    简而言之,这个操作似乎与我认为的有所不同——我正在寻找的这个 EWS ID 不在 Outlook 项目中;为了获得它,你必须调用 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
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-07
      • 1970-01-01
      • 2016-02-09
      相关资源
      最近更新 更多