1

我目前正在使用 EWS 托管 API (C#) 设置自ExtendedProperties定义CalendarFolder

myCalendar.SetExtendedProperty(customExtendedProperty, true);

我还可以在绑定时使用托管 API 加载这些设置CalendarFolder

var myCalendar = CalendarFolder.Bind(service, folderId, requestedPropertySet);

接下来我想阅读这些相同的内容ExtendedProperties,但来自使用 Office JavaScript 库的 Outlook 加载项。

从 Outlook 库的外观来看,它没有公开任何Office.context.item访问ExtendedProperties.

库中是否有允许我访问它的方法?"http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/yourProp"如果没有,我可以使用在 URL 路径 ( )中具有 GUID 的架构方法吗?

4

2 回答 2

4

要在 Addin 中访问您自己的文件夹上的自定义属性,您需要使用 makeEwsRequestAsync https://dev.outlook.com/reference/add-ins/Office.context.mailbox.html#makeEwsRequestAsync在您的 Addin 中执行 GetFolder。要获得正确的 SOAP 消息,只需在 EWS 托管 API 代码中启用跟踪,这将输出使用的 SOAP https://msdn.microsoft.com/en-us/library/office/dn495632(v=exchg.150).aspx其中你可以把这些转置。要注意的一件事是在您的应用程序中制作 makeEwsRequestAsync 的安全要求,例如 ReadWriteMailbox http://dev.office.com/docs/add-ins/outlook/understanding-outlook-add-in-permissions

于 2016-08-17T05:59:43.107 回答
2

截至目前(2018 年 7 月),在编写 Outlook 加载项时访问自定义 ExtendedProperties 的首选方法是使用ExtendedProperties REST API

有一些示例代码展示了如何将 API 与 Office 加载项 JavaScript 库一起使用,可从Office 开发中心获得。

要使用 API,您需要从当前 Outlook 邮箱中获取身份验证令牌。这可以使用Office.context.mailbox.getCallbackTokenAsync()带有关键字参数的方法来完成{isRest: true}。您还应该使用该Office.context.mailbox.restUrl属性来获取 API 调用的正确基本 URL。

有几种方法可以实际从 JavaScript 进行 REST API 调用,但在客户端执行此操作的最简单方法是使用 AJAX 调用。在您的示例中,这看起来像:

const getMessageUrl = Office.context.mailbox.restUrl
  + "/v2.0/me/mailFolders/" + <folder id> + "?"
  + "$expand=singleValueExtendedProperties"
  + "($filter=PropertyId eq '<property id>')";

$.ajax({
  url: getMessageUrl,
  datatype: 'json',
  headers: {'Authorization': 'Bearer ' + <auth token>}
}).then(item => {
  // your code here
})

如果您有属性的 GUID,则 <property id> 将如下所示:

"String {00020329-0000-0000-C000-000000000046} Name yourProp"

如果您像我一样尝试访问早于 GUID 规则的属性,那么您的 <property id> 可能如下所示:

"String 0x007D"
于 2018-07-21T04:14:20.327 回答