必须选用Power Automate中“当收到新邮件时(V3)”触发器并勾选Include attachments,解析XML前需按声明编码(如GBK)正确解码,Parse XML操作须提供schema,大文件需预判大小并分流处理。

Power Automate 中触发器必须选对:当收到新邮件时(V3)
用错触发器是第一步就卡住的最常见原因。如果你选了「当收到新邮件时」旧版(V2),它默认不加载附件内容,attachments 字段为空或只返回元数据。必须选 V3 版本触发器——它在触发时就支持原生获取附件二进制流。
实操建议:
- 在触发器配置里勾选
Include attachments(不是默认开启) - 确保邮箱账户有读取附件的权限(尤其使用共享邮箱或 Microsoft 365 Group 时)
- 如果附件是 .xml.gz 或加密 ZIP,V3 触发器也无能为力,需先用「解压缩文件」或「HTTP 请求」配合外部服务预处理
解析 XML 前必须做编码判断:别直接用 UTF-8 硬解
很多 XML 文件头部声明了编码(如 ),但 Power Automate 的 Parse XML 操作不读取该声明,它依赖你传入的字符串是否已按正确编码解码。若用 UTF-8 解一个 GBK 编码的 XML,会报错 Invalid character in the given encoding 或解析出乱码节点。
实操建议:
- 先用
Get attachment content获取body(base64 字符串) - 用
Base64 to Binary转成二进制,再用Binary to String转字符串 —— 这一步必须指定正确编码(可先用条件判断文件名后缀或 HTTP Content-Type,或固定 fallback 到UTF-8/GBK) - 若不确定编码,可在流程开头加一个「条件」分支:
contains(triggerBody()?['subject'], 'GBK'),或检查triggerBody()?['attachments'][0]['name']是否含中文字符再切编码
Parse XML 操作的 schema 必须手动提供或自动生成
Parse XML 不是智能识别结构,它需要你提供 XSD schema 或至少一个示例 XML 来生成 schema。如果跳过这步直接连到后续操作,会提示 The provided schema is invalid,且错误信息不明确。
实操建议:
- 把一份典型附件 XML 内容复制出来,在流程中插入
Parse XML操作,点击Generate from sample,粘贴 XML 示例(确保格式完整、无 BOM、缩进不影响) - 生成后立即保存,否则编辑器可能丢掉 schema;生成的 schema 会嵌入到流程 JSON 中,不可见但影响运行
- 如果 XML 结构动态(比如
和并存),schema 需覆盖所有可能字段,否则缺失字段在body中不会被解析出来
{
"root": {
"items": {
"item": [
{
"@id": "1",
"#text": "value1"
},
{
"@type": "A",
"#text": "value2"
}
]
}
}
}
处理大 XML 附件时性能与限制要提前评估
Power Automate 对单次操作的输入/输出大小有限制:免费版上限 5 MB,付费版(Per Flow)约 50 MB。但实际瓶颈常在 Parse XML —— 它内部会将整个 XML 加载为内存对象,超过 2–3 MB 就容易超时(默认操作超时 2 分钟)或触发 BadGateway。
实操建议:
- 用
Length函数提前判断length(body('Get_attachment_content'))(base64 长度 ≈ 原始大小 × 1.33),超 2 MB 就走备用路径(如调用 Azure Function 或 Logic App 处理) - 避免在
Parse XML后接「Apply to each」遍历上千个节点;改用Filter array先筛出关键子集 - XML 中含 CDATA 或特殊实体(
)时,Parse XML可能失败,需前置用Replace清洗(如替换为)










