Office 365 API:如何获取邮件所属的共享邮箱/文件夹信息?
解决共享文件夹邮件下载的问题
当处理共享文件夹中的邮件时,你需要从Office.context.mailbox.item.sharedProperties对象中获取共享邮箱的关键信息,这是当前代码遗漏的核心部分。
具体修复步骤:
- 获取共享邮箱所有者地址:当
isFromSharedFolder为true时,Office.context.mailbox.item.sharedProperties会包含共享资源的详细信息,其中ownerEmailAddress就是你需要的${sharedfolder-email}。 - 适配个人/共享场景:针对个人邮箱和共享邮箱分别处理邮箱地址,确保API路径的正确性。
- 更新代码逻辑:修改你的JavaScript代码,补充共享邮箱信息的读取逻辑:
Office.context.mailbox.getCallbackTokenAsync(function(result) { if (result.status !== "succeeded") { printError(outputEl, "Error happened (access token was not issued), try again or contact support"); return; } var token = result.value; var ewsurl = Office.context.mailbox.restUrl; var ewsItemId = Office.context.mailbox.item.itemId; var isFromSharedFolder = Office.context.mailbox.initialData.isFromSharedFolder; let targetEmail = ''; if (isFromSharedFolder) { // 读取共享邮箱所有者的邮箱地址 targetEmail = Office.context.mailbox.item.sharedProperties.ownerEmailAddress; } else { // 个人邮箱场景使用当前用户邮箱 targetEmail = Office.context.mailbox.userProfile.emailAddress; } const itemId = Office.context.mailbox.convertToRestId(ewsItemId, Office.MailboxEnums.RestVersion.v2_0); // 构造正确的下载API路径 const downloadUrl = `https://outlook.office365.com/api/v2.0/users/${targetEmail}/messages/${itemId}/$value`; // 后续执行下载请求逻辑... });
额外注意事项:
- 确保插件清单(
manifest.xml)中开启共享文件夹支持:将SupportsSharedFolders属性设置为true,同时权限需包含ReadWriteMailbox或对应精细权限,否则无法读取sharedProperties。 - 若处理的是公共文件夹而非用户共享邮箱,可通过
sharedProperties.folderName确认具体文件夹,但ownerEmailAddress仍是构建API路径的核心参数。
内容的提问来源于stack exchange,提问作者Dmytro Pastovenskyi
相关产品推荐
相关产品推荐

