使用 Power Automate 自动整理 Outlook 邮箱
引
实不相瞒,这么久了我一直都在寻找完美的电子邮箱客户端。
- Gmail
自动化程度相对较高且方便使用,功能合理,但是客户端需要使用网络代理。(可以通过第三方客户端直连到 Google 的 SMTP 服务器) - Outlook
与自家的 Onedrive 结合,形成独特优势。
虽然有不少的集成到其中的 miniApp,但我发觉都不太好用,有不少都是因为网络问题造成的体验不佳。
另外,Outlook 的自动规则有问题,当规则中包含针对移动邮件的操作时,在手机客户端上就不会通知新邮件,这样会非常影响时效。
为此,我想起了可以借助几年前偶然发现的 Power Automate 平台,利用云端自动化,实现更加自由的操作。
(类似 iOS 中的快捷指令,可惜的是快捷指令中对邮件的操作非常少,甚至不能对邮件进行移动)
在之前我就使用 Power Automate 进行了邮件相关的操作,比如将新邮件中的附件自动存储到 Onedrive 的指定文件夹。当然,这个自动化我后面也会提到。 接下来先说如何实现’定时自动分类邮件到对应文件夹’。
实现定时自动分类邮件到对应文件夹
登入 Power Automate 平台
首先进入Power Automate平台,使用 Outlook 的微软账户登录,即可进入管理页面。
接下来点击左侧的’我的流’再点击上方工具栏中的’新建流’,‘计划的云端流’ 然后在此处配置需要的运行时间,比如此处配置为每天 00:00 执行一次,点击创建。 现在就进入了这个自动化的详细配置界面,点击每个操作步骤都能够展开详情。 接下来我将优先展示本次目标的具体操作流程,快速了解大致流程。编辑自动化
graph TD
A(时间触发器) --> B(从 Onedrive 中获取包含分类规则的电子表格\n并且根据行进行拆分)
B --> C(从 Outlook 获取收件箱的邮件信息)
C --> D{{所有邮件是否处理完?}}
D -->|否\n还有邮件未进行处理| F(从当前邮件中提取发件人)
D -->|是\n邮件处理完毕| Z(结束处理)
F --> G{{当前邮件是否检测了所有规则?}}
G -->|否\n还有规则未进行检测| T{{当前邮件的发件人是否满足当前规则?}}
G -->|是\n规则检测完毕| I(结束处理当前邮件)
I -->|切换至下一封邮件| D
T -->|否\n不满足当前规则| J(结束处理当前规则)
J -->|切换至下一条规则| G
T -->|是\n命中当前规则| K(根据当前规则\n将当前邮件移动至相应文件夹)
K --> J
也通过伪代码形式帮助有编程经验的读者提供部分细节。
|
|
从 Onedrive 中获取电子表格
在这一步之前我们需要先手动在 Onedrive 中创建一个表格文件,例如’/OneDrive/Files/PowerAutomate/rules.xlsx’。 现在有了表格文件,其中默认自带工作表’Sheet1’,还需要在工作表’Sheet1’中创建表,也就是指定区域用于存储数据。
添加新步骤,搜索’excel’,选择’Excel Online(OneDrive)’,选择’创建表'
接着如图,指定表格文件’/OneDrive/Files/PowerAutomate/rules.xlsx’,指定表格区域’A1:B50’(范围是两列五十行,也可按需自行修改) ,指定列名’rule,targetFolder’。指定表格文件
请使用右侧的文件夹选择表格文件,而不是手动输入文件的路径。
创建表的常见错误
如果测试结果失败,请查看具体原因。
- 失败原因是没有授权,可以在流的管理界面点击运行,而不是测试。
- 失败原因是找不到文件,通常是因为手动输入表格文件路径造成的。
完成以后就可以删除刚才创建的这个操作了,接下来同样从’Excel Online(OneDrive)‘中选择’列出表中存在的行’。 这个操作会将所有的规则拆分为不同的项,备用。 按照刚才的类似的方法,配置好这个步骤。
从 Outlook 获取收件箱的邮件信息
添加新步骤,搜索’outlook’,选择’Outlook.com’,选择’获取电子邮件(V2)’。注意区分!
然后根据需求配置,例如从收件箱中无条件选择 20 个邮件。
重复处理每一封邮件
添加新步骤,选择’控件’,选择’执行,直至’。
请务必按照我这样配置,因为我发现有暗藏的 bug 会影响这个循环逻辑。
条件配置为假,例如'1等于2’。下方的’限制’设置为'1’。
在这其中再添加新步骤,选择’控件’,选择’应用到每一个’,顺便把这个步骤更名为’对于每一个邮件’。
从弹出的窗口中选择’动态内容’中’获取电子邮件(V2)‘的’value’
重复处理每一个规则
同样的,
添加新步骤,选择’控件’,选择’应用到每一个’,顺便把这个步骤更名为’对于每一个规则’。
从弹出的窗口中选择’动态内容’中’列出表中存在的行’的’value’
检测当前邮件的发件人是否满足当前规则
添加新步骤,选择’控件’,选择’条件’。
然后如图配置规则。规则可以自定义,比如我这里是发件人邮箱的关键字匹配。
Power Automate 与编程的区别
这里似乎是直接引用了’获取电子邮件(V2)‘这个步骤的所有发件人,但其实在循环中自动选择的是当前循环项的一个发件人。引用的规则同理。
将匹配规则的邮件移动到对应文件夹
在上一步中设置好“条件”后,继续在“如果是”分支下添加操作。 搜索 Outlook.com,选择 移动电子邮件(V2),这是我们实现自动整理的关键步骤。
在参数中设置:
- 邮件 ID:选择“获取电子邮件(V2)”输出的 Message Id;
- 目标文件夹:选择规则中指定的目标文件夹字段。这个字段在前面提到的 Excel 表格中已经配置。
⚠️ 注意:如果目标文件夹名称拼写不一致,或者目标文件夹不存在,可能会导致流程中断。
如果你希望在移动邮件之前进行备份,也可以先使用 复制邮件(V2) 操作再进行删除/移动。 至此,一个完整的邮件分类流程就设置完成了。
可选优化建议
虽然以上流程已经实现了基础的自动整理功能,但 Power Automate 提供了非常丰富的扩展能力,我们还可以做更多:
-
添加异常处理 在一些步骤中,可能由于网络、权限或数据问题导致失败。可以使用 “作用域(Scope)” + “运行后配置” 来捕捉异常,并通过邮件通知自己。
-
日志记录 可以在 OneDrive 或 SharePoint 上维护一份处理日志,例如:
- 处理时间
- 命中规则
- 移动目标文件夹
- 邮件主题
这些信息可以通过 Power Automate 的 “添加行到表格” 操作记录到另一个 Excel 文件中。
- 多种匹配条件支持 目前只实现了发件人关键字的匹配。可以拓展为:
- 主题关键词
- 收件时间段
- 是否有附件
- 邮件内容关键词
通过在 Excel 中增加规则字段并在自动化流程中增加条件判断即可。