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

Power Automate转义数组所有字符,导致无法用作邮件附件求助

解决Power Automate发送多邮件附件的字符转义问题

问题根源

你碰到的是Power Automate把附件数组错误当成字符串处理的问题——直接传数组时,系统自动给所有双引号加了转义符,导致Graph API无法正确解析附件结构,手动拼字符串和用json()函数反而会加重这个问题。

分步解决办法

1. 用数组变量构建附件(别手动拼字符串)

别自己写JSON字符串,直接用Power Automate的数组变量来组装:

  • 先新建一个数组变量(比如命名为var_Attachments)
  • 对每个要加的附件,用「Append to array variable」动作,每个项的结构要写成这样:
    {
      "Name": "@{items('Apply_to_each')?['Name']}",
      "ContentBytes": "@{body('Get_file_content')?['$content']}",
      "@odata.type": "#microsoft.graph.fileAttachment"
    }
    
    重点:必须加@odata.type这个字段,这是Graph API识别附件类型的关键,没加的话大概率解析失败。

2. 发送邮件时直接引用数组

  • 如果用内置的「Send an email (V2)」动作,直接在「附件」选项里选你建好的数组变量就行,不用额外处理。
  • 如果是调用Microsoft Graph的「Send mail」动作,在emailMessage/Attachments参数里直接传数组变量,别用json()函数包裹——Power Automate会自动帮你正确序列化数组,不会出现转义符。

3. 避坑要点

  • ContentBytes一定要取文件内容的$content属性,不是$content-type,比如用body('Get_file_content')['$content']来获取。
  • 所有动态内容都用Power Automate的变量或动态选择器插入,别手动写带双引号的字符串,一写就会触发自动转义。
  • 如果之前试过手动拼字符串或者用了string()函数,先把这些逻辑删掉,重新用数组变量来做。

简单流程示例

  1. 加个触发动作(比如手动触发)
  2. 获取要作为附件的文件列表(比如从SharePoint拉文件)
  3. 初始化数组变量var_Attachments
  4. 循环每个文件:
    • 执行「Get file content」动作拿文件内容
    • 用「Append to array variable」把附件对象加到数组里
  5. 调用发送邮件动作,在附件字段选var_Attachments

内容的提问来源于stack exchange,提问作者Christian Hilz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 08:07:10