Outlook加载项权限被拒绝

Dănuț Mihai Florian

尝试阅读电子邮件中的标头时出现以下错误:

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>

任何帮助将非常感激。谢谢!

Dănuț Mihai Florian

事实证明,getAllInternetHeadersAsync只有在requirement set 1.82020年8月iOS或现代mac应用程序不支持的情况下才可用。解决方案是使用Exchange休息请求。我共享我使用的代码,以防将来有人需要它(打字稿)。

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}`, ""));
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章