在BluePrism开发RPA时,如何用Mapiex保存Outlook邮件附件?
在BluePrism中通过MAPIEX从Outlook下载Excel附件的完整步骤
刚巧我之前在BluePrism里做过类似的RPA开发,给你梳理一套亲测可行的操作流程,一步步来就行:
一、前置准备
- 确认你的BluePrism已经安装了MAPIEX扩展(默认安装包会自带,如果没有的话,去BluePrism的扩展库搜索添加即可)
- 确保运行BluePrism的用户账号已经配置好Outlook邮箱,并且拥有该邮箱的完全访问权限(避免后续出现权限报错)
二、创建可复用的操作对象(推荐)
建议把邮件操作封装成一个独立的BluePrism Object,这样后续其他流程也能直接调用:
- 打开BluePrism,新建一个Object,命名比如
Outlook_Attachment_Downloader - 在这个Object里添加MAPIEX的核心Actions:
Connect、Get Messages、Get Attachments、Save Attachment、Disconnect
三、具体操作流程
1. 连接到Outlook
- 拖入
MAPIEX > ConnectAction,不需要额外参数(默认连接当前用户的Outlook配置文件);如果需要指定特定配置文件,在Profile Name参数里填写对应的名称 - 执行后会返回一个
Session ID,后续所有MAPIEX操作都要用到这个ID,一定要保存好
2. 筛选目标邮件
- 拖入
MAPIEX > Get MessagesAction,传入之前获取的Session ID - 设置筛选条件:比如指定文件夹(比如"Inbox")、发件人邮箱、主题关键词(比如"月度报表")、时间范围(比如近7天),按需调整即可
- 这个Action会返回一个
Message Collection,包含所有符合条件的邮件的详细信息(比如Message ID、主题、发件人等)
3. 遍历邮件并筛选Excel附件
- 添加一个Loop循环,遍历
Message Collection里的每一条邮件 - 对每一条邮件,拖入
MAPIEX > Get AttachmentsAction,传入Session ID和当前邮件的Message ID,返回Attachment Collection(包含所有附件的文件名、类型、Attachment ID等信息) - 再添加一个嵌套Loop,遍历
Attachment Collection,通过判断Attachment Name的后缀来筛选Excel文件——比如判断是否以.xlsx或.xls结尾(可以用BluePrism的Right函数提取后缀,或者直接用Contains函数匹配)
4. 保存Excel附件到指定路径
- 对筛选出来的Excel附件,拖入
MAPIEX > Save AttachmentAction - 传入参数:
Session ID、当前邮件的Message ID、附件的Attachment ID,以及目标保存路径(比如C:\RPA_Output\Excel_Files\) - 注意:如果目标路径不存在,先用
File Management > Create DirectoryAction创建文件夹,避免保存失败
5. 释放资源
- 所有操作完成后,一定要拖入
MAPIEX > DisconnectAction,传入Session ID,关闭Outlook连接,避免占用系统资源
四、关键注意事项
- 确保Outlook在后台正常运行,或者BluePrism运行时有权限启动Outlook(不要用系统账户运行BluePrism,最好用配置了邮箱的普通用户账户)
- 如果遇到"程序无法访问Outlook"的权限报错,去Outlook的信任中心设置,允许第三方程序访问邮件
- 有些邮件附件的文件名可能包含非法字符(比如
/\:*?"<>|),保存前建议用Replace函数替换掉这些字符,避免保存失败
内容的提问来源于stack exchange,提问作者anandhu




