可以从邮箱返回令牌.getCallbackTokenAsync对邮件项目执行写入操作



从该文档中,我们可以使用getCallbackTokenAsync获取令牌,使用该令牌可以在第三方系统中调用Exchange Web服务。引号为"获取一个字符串,该字符串包含用于从Exchange Server获取附件或项的令牌。"它没有指定对"写入"权限的任何限制。

然后,根据这个文档,如果我们将加载项权限更改为ReadWriteMailbox,我们可以"读取和写入用户邮箱中任何项目的所有属性">

在我的外接程序中,我将权限级别设置为ReadWriteMailbox,并使用从getCallbackTokenAsync返回的令牌对exchange service进行身份验证。但当我尝试将自定义属性写入Exchange服务器时,我得到了以下错误Microsoft.Exchange.WebServices.Data.ServiceResponseException: 'The requested web method is unavailable to this caller or application.'

我的代码

exchangeService.Credentials = new OAuthCredentials({accesstoken returned by mailbox.getCallbackTokenAsync});
Guid PS_PUBLIC_STRINGS = new Guid("00020329-0000-0000-C000-000000000046");
ExtendedPropertyDefinition extendedPropertyDefinition = new ExtendedPropertyDefinition(PS_PUBLIC_STRINGS, "cecp-a8e14732-37cf-4a46-b69f-2539f4059948", MapiPropertyType.String);
var obj = new
{
customProp: "cp"
};
Email.SetExtendedProperty(extendedPropertyDefinition, JsonConvert.SerializeObject(obj));
Email.Update(ConflictResolutionMode.AlwaysOverwrite); //this erros occurs here

getCallbackTokenAsync提供的令牌只能用于此处记录的方法:https://learn.microsoft.com/en-us/outlook/add-ins/web-services

您可以参考此链接来找到直接向EWS进行身份验证的方法:https://learn.microsoft.com/en-us/exchange/client-developer/exchange-web-services/authentication-and-ews-in-exchange

不建议直接通过EWS更新自定义属性,只应将应用程序用于此目的。

最新更新