2017-05-24 87 views
0

花了几个小时试图回答我的问题后,我决定是时候就SO提出问题了,因为也许有人知道我可以从哪个MAPI属性获取此信息。如何在Outlook PlugIn(VSTO)中获取原始(Exchange)文件夹UniqueID?

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

从我迄今阅读的内容来看,有几千个MAPI属性可用于Outlook项目/文件夹,但我不知道哪些是与Exchange相关的属性。

非常感谢您的任何线索。

回答

0

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

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

我试图离开评论,但公司的合并,我们搬到了一个新的领域,我有一个新的电子邮件地址,并在这里一个新的ID,信誉从零开始再次!

+0

这是由Outlook中创建对象时被添加到存储库中条目的ID,这是不是有什么我在找。我需要的是来自交换服务器的独特之处。 – Edi

0

在获取了一些其他帖子的线索后,似乎我所寻找的名称是“将VSTO EntryID转换为EWS ID”(至少这是我搜索的:-)。

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

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; 
} 
相关问题