如何在PowerApps中调用Exchange Online存档邮箱的邮件?
问题:PowerApps访问Exchange Online存档邮箱的替代方案
我正尝试在PowerApps中搭建一款工具,给非技术人员提供简洁界面(替代不够易用的Outlook搜索栏),用来搜索、查看并保存多年前已发送邮件的附件。但目前只能访问主邮箱中近12个月的邮件,因为公司把更早的邮件归档到了Exchange Online存档邮箱。
我一直在用Outlook连接器的GetEmailsV3函数,但它只能从主邮箱拉取邮件(最多近12个月的内容):
Office365Outlook.GetEmailsV3({folderPath:"Sent Items",searchQuery:"to:some.address@domain.com",fetchOnlyWithAttachment:true,fetchOnlyUnread:false}).value
之前有可用的API调用方式,但这些接口在2020年3月已经关闭,相关讨论可查看Stack Overflow的两个问题:
- How to get messages from archived mailbox using MS Graph API
- How to get In-Place archive mailbox in Exchange Online using Office 365 APIs
请问有没有无需求助IT部门运行Exchange PowerShell合规脚本,就能调用Exchange Online存档邮箱邮件的其他方法?
可行解决方案(无需IT部门介入)
1. 用Microsoft Graph Mail连接器直接访问
PowerApps内置的Microsoft Graph Mail连接器支持访问存档邮箱,操作步骤:
- 在PowerApps的连接器列表中搜索并添加「Microsoft Graph Mail」
- 使用
GetMessages函数时,指定mailboxType参数为"Archive",示例代码:
注:默认情况下个人账号对自身的存档邮箱拥有访问权限,无需额外申请。MicrosoftGraphMail.GetMessages({ folderId: "SentItems", searchQuery: "to:some.address@domain.com", includeAttachments: true, mailboxType: "Archive" }).value
2. 映射存档邮箱到Outlook客户端后用原有连接器访问
如果Graph连接器无法使用,可以试试手动挂载存档邮箱:
- 在本地Outlook客户端中,通过「文件>信息>账户设置>账户设置>更改>更多设置>高级>添加」,添加自己的存档邮箱(部分环境下左侧导航栏会自动显示「存档」文件夹)
- 之后在PowerApps中使用
GetEmailsV3时,把folderPath指定为存档邮箱的已发送邮件路径,示例:
注:此方法依赖Outlook客户端的配置,部分环境可能需要确认邮箱权限允许此类访问。Office365Outlook.GetEmailsV3({ folderPath: "存档/Sent Items", searchQuery: "to:some.address@domain.com", fetchOnlyWithAttachment: true, fetchOnlyUnread: false }).value
3. 通过Power Automate中转获取数据
用Power Automate搭建一个中转流,调用Microsoft Graph获取存档邮箱邮件后返回给PowerApps:
- 在Power Automate新建「即时云流」,触发方式选「PowerApps」
- 添加「Microsoft Graph > 列出邮件」操作,设置「邮箱类型」为「存档」,「文件夹」选「已发送邮件」,并配置搜索条件
- 把流的返回结果设置为包含附件信息的邮件列表
- 在PowerApps中调用这个流,就能拿到存档邮箱的邮件数据
内容的提问来源于stack exchange,提问作者Dasha_B
相关产品推荐
相关产品推荐

