如何从Outlook获取结构化邮件头并在Power Automate Desktop处理
Power Automate Desktop 解析.msg文件获取结构化邮件头方案
核心思路
不要手动硬解析纯文本邮件头,纯靠文本切割处理折行、编码、特殊字符的坑非常多。直接通过Outlook提供的COM接口读取.msg文件的内置结构化属性是成本最低的方案,完全符合约束要求:不需要调用Graph API,脚本采用PowerShell编写,Power Automate Desktop(以下简称PAD)原生支持直接运行。
分步操作流程
- 在PAD流程中先将待处理的.msg格式附件保存到本地临时目录,记录文件的绝对路径
- 新增「运行PowerShell脚本」动作,将下方提供的脚本粘贴到脚本编辑区,将脚本的入参替换为上一步拿到的.msg文件本地绝对路径
- 将脚本输出的JSON格式结果存入PAD自定义变量,后续流程可以直接按键名读取对应邮件头字段,不需要做额外的文本处理
参考PowerShell实现代码
# 入参:待解析.msg文件的本地绝对路径 param( [Parameter(Mandatory=$true)] [string]$MsgLocalPath ) # 调用Outlook COM组件读取文件,不会前台启动Outlook客户端界面 $outlookCom = New-Object -ComObject Outlook.Application $mailItem = $outlookCom.Session.OpenSharedItem($MsgLocalPath) # 按需提取需要的邮件头字段,需要额外字段可直接在下方对象中补充 $structuredHeader = [PSCustomObject]@{ MailSubject = $mailItem.Subject SenderAddress = $mailItem.SenderEmailAddress SenderDisplayName = $mailItem.SenderName ReceiverTo = $mailItem.To ReceiverCC = $mailItem.CC ReceiverBCC = $mailItem.BCC SendTime = $mailItem.SentOn ReceiveTime = $mailItem.ReceivedTime ConversationId = $mailItem.ConversationID MailPriority = $mailItem.Importance RawHeaderText = $mailItem.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x007D001F") AttachmentCount = $mailItem.Attachments.Count } # 释放COM对象占用,避免文件被锁无法后续操作 [System.Runtime.Interopservices.Marshal]::ReleaseComObject($mailItem) | Out-Null [System.Runtime.Interopservices.Marshal]::ReleaseComObject($outlookCom) | Out-Null [GC]::Collect() [GC]::WaitForPendingFinalizers() # 输出JSON结构化结果,PAD可直接识别转换为流程对象 $structuredHeader | ConvertTo-Json -Depth 5
注意事项
- 运行脚本的设备必须预装Outlook桌面客户端,否则COM对象无法正常调用
- 如果需要提取自定义X-开头的扩展邮件头,既可以通过MAPI属性标签直接读取结构化值,也可以对
RawHeaderText字段做简单键值匹配,比全量解析纯文本邮件头的复杂度低90%以上 - 脚本末尾已经做了COM资源释放,执行完成后不会出现.msg文件被锁定无法移动、删除的问题
- 如果环境限制无法运行PowerShell,可以将相同逻辑改写为VBScript,调用的COM接口完全一致,PAD同样原生支持
无Outlook客户端备选方案
如果执行设备没有安装Outlook客户端,可以用正则规则快速解析纯文本邮件头:纯文本邮件头格式固定为「字段名: 字段值」,折行的字段值开头会带空格或制表符,核心匹配逻辑如下:
逐行遍历纯文本内容,行首为非空白字符且包含英文冒号的行判定为新字段起点,后续所有开头带空白字符的行都归属到上一个字段的值内容,最后按键值对整理为JSON即可。
内容的提问来源于stack exchange,提问作者DoDo
相关产品推荐
相关产品推荐

