Outlook加载项权限被拒绝

问题描述

当尝试读取电子邮件中的标题时,出现以下错误

code: 7000   
message: "You don't have sufficient permissions for this action."    
name: "Permission Denied"

我正在使用Outlook for Mac 16.41的新版本和最新的iOS版本。在这两个应用程序中,即使它可以在Web上或在旧版本的Outlook上运行,我也无法阅读所选电子邮件中的标题

我正在使用以下方法加载标题

private _loadHeaders(): Promise<string> {
    return new Promise((resolve,reject) => {
        this.mailBox.item.getAllInternetHeadersAsync(({ status,value,error }) => {                
            if (status === Office.AsyncResultStatus.Succeeded) {
                const header = value.replace(/[\r\n]+? ?=\?[a-z\-]+\?[A-Z]{1}\?([\S]+)\?=?/g,(_,data) => data.replace("=2E",".").replace("=5F","_"));
                return resolve(header);
            } else {
                return reject(error);
            }
        });
    });
}

,并在我的清单中具有以下权限:

<Permissions>ReadWriteMailBox</Permissions>

任何帮助将不胜感激。谢谢!

解决方法

结果证明,getAllInternetHeadersAsync仅在requirement set 1.8中可用,而2020年8月,iOS或现代mac应用程序均不支持private get _itemRestId() { if (this._mailbox.diagnostics.hostName === 'OutlookIOS') { // itemId is already REST-formatted return this._mailbox.item.itemId; } else { // Convert to an item ID for API v2.0 return this._mailbox.convertToRestId( this._mailbox.item.itemId,Office.MailboxEnums.RestVersion.v2_0 ); } } private get _headersUrl() { return `${this._restUrl}/v2.0/me/messages/${this._itemRestId}?$select=*,internetMessageHeaders`; } private get _accessToken(): Promise<string> { return new Promise((resolve,reject) => { this._mailbox.getCallbackTokenAsync({ isRest: true },({ status,value,error }) => { if (status === Office.AsyncResultStatus.Succeeded) { return resolve(value); } else { return reject(error) } }); }); } get headers(): Promise<string> { return this._accessToken .then(accessToken => fetch(this._headersUrl,{ headers: { 'Content-Type': 'application/text','Authorization': 'Bearer ' + accessToken } })) .then(response => response.json()) .then(data => data.InternetMessageHeaders.reduce((carry,item) => `${carry}\n\r${item.Name}: ${item.Value}`,"")); } 。解决方案是使用Exchange休息请求。我正在分享我使用的代码,以防将来有人使用它(打字稿)。

{{1}}