You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Power Automate中Outlook附件xls文件损坏问题?

解决Power Automate中OneDrive XLS文件作为邮件附件损坏的问题

问题核心原因

你当前的流程错误在于直接将OneDrive「获取文件内容」返回的Base64字符串追加到数组,且附件对象格式不符合Outlook发送邮件的要求,导致文件解析时损坏。

正确流程实现步骤

  1. 初始化数组变量
    创建一个类型为Array的变量(例如命名为AttachmentsArray),用于存储所有待发送的附件对象。

  2. 批量获取目标文件夹文件
    使用OneDrive的「List files in folder」操作,指定目标文件夹路径,一次性获取所有需要发送的XLS文件,避免手动重复添加「获取文件内容」步骤。

  3. 遍历文件并构造附件对象
    添加「Apply to each」循环,遍历「List files in folder」返回的value集合:

    • 在循环内调用OneDrive的「Get file content」操作,选择当前循环项的Identifier作为文件标识。
    • 执行「Append to array variable」操作,向AttachmentsArray中追加如下格式的对象(注意键名大小写敏感):
      {
        "Name": "@items('Apply_to_each')?['Name']",
        "ContentBytes": "@base64ToBinary(body('Get_file_content')?['$content'])"
      }
      
      其中:
      • Name:取自当前循环文件的名称
      • ContentBytes:通过base64ToBinary函数将「获取文件内容」返回的Base64格式内容($content字段)转换为二进制字节流
  4. 发送邮件并关联附件数组
    在Outlook「Send email V2」操作中,找到「Attachments」字段,直接选择之前初始化的AttachmentsArray变量即可。

常见错误排查

  • 若流无法保存:检查base64ToBinary函数的参数是否正确,必须指向「Get file content」返回的$content字段,避免拼写错误。
  • 若附件仍损坏:确认附件对象的键名严格为Name和ContentBytes,不可用其他别名(如FileName、Content);同时确保源文件本身未损坏,可单独下载验证。

如需进一步排查,可提供流程的JSON定义。

内容的提问来源于stack exchange,提问作者Oskar Leonardo Rojas G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 00:01:02