Azure Logic Apps如何一次性发送多附件邮件?解决重复发送问题
解决Azure Logic Apps按附件数量重复发送邮件的问题
问题原因
从你的工作流截图来看,应该是**「发送邮件」动作处于Blob遍历循环内部,或者直接在附件字段绑定了Blob列表数组**——Logic Apps会默认对数组里的每个元素触发一次发送动作,导致每一个附件对应一封邮件。
快速解决方案
按以下步骤调整工作流,就能一次性发送包含所有附件的单封邮件:
初始化数组变量
在工作流最开头添加「初始化变量」动作:- 变量类型选数组
- 名称设为
allAttachments(自定义名称也可以)
遍历Blob并收集附件信息
- 先执行「列出Blob」动作,获取目标存储容器里的所有文件。
- 添加「针对每个」循环,循环对象选择「列出Blob」返回的
value数组。 - 在循环内部,执行「获取Blob内容」动作,选择当前循环的Blob项。
- 再添加「追加到数组变量」动作,把当前Blob的信息按格式追加到
allAttachments:{ "Name": "@items('针对每个')?['Name']", "ContentBytes": "@body('获取_Blob_内容')?['$content']" }
循环外发送邮件
把「发送邮件」动作拖到「针对每个」循环的外面,在邮件的「附件」字段直接选择刚才创建的allAttachments变量即可。
简化写法(无需循环)
如果你的「列出Blob」动作已经开启了返回内容的选项(能拿到ContentBytes),可以直接用表达式构造附件数组,省去循环步骤:
在「发送邮件」的附件字段输入以下表达式:
@select(body('List_blobs')?['value'], (item) => { "Name": item?['Name'], "ContentBytes": item?['ContentBytes'] })
这样就能确保只发送一封包含所有附件的邮件,不会出现重复发送的情况。
内容的提问来源于stack exchange,提问作者Nunotrt
相关产品推荐
相关产品推荐

