如何在Logical App中为特定Pipeline从Blob Storage发送指定邮件附件?
在Logic App中实现按Pipeline匹配Blob文件并发送邮件附件的方案
核心思路
通过触发事件关联Pipeline名称,再根据名称匹配对应Blob文件,最后发送带附件的邮件通知。以下是具体实现步骤:
步骤1:配置触发源
根据场景选择合适的触发器:
- Azure Data Factory Pipeline触发:使用
Azure Data Factory - 当管道运行成功时触发器,关联你的ADF实例,精准捕获目标Pipeline的完成事件。 - 定时触发:若需周期性检查Pipeline状态,使用
Recurrence触发器,后续添加Azure Data Factory - 获取管道运行动作筛选目标Pipeline的运行记录。
步骤2:按Pipeline名称匹配文件
用逻辑控制分支区分不同Pipeline的处理逻辑:
- 选择条件控制动作,设置判断规则:
@{triggerBody()?.PipelineName}(或获取管道运行动作返回的Pipeline名称字段)等于目标名称(如Transaction pipeline)。 - 为
Master pipeline、Invoice pipeline分别添加对应条件分支;或使用开关控制动作(更简洁),以Pipeline名称为开关值,每个Case对应一个Pipeline的处理流程。
步骤3:获取对应Blob文件内容
在每个分支/Case中添加Azure Blob Storage - 获取 blob 内容动作:
- 配置你的存储账户、目标容器。
- 在
Blob 路径中填写对应文件名:Transaction分支填TRANSACTOIN.xlsx,Master分支填MASTER.xlsx,Invoice分支填INVOICE.xlsx。 - 勾选
包含内容字节选项,确保能将文件内容作为附件传递。
步骤4:发送带附件的邮件
添加邮件发送动作(以Office 365 Outlook为例):
- 选择
Office 365 Outlook - 发送电子邮件动作,配置收件人、邮件主题(可动态插入Pipeline名称:@{triggerBody()?.PipelineName} 运行完成通知)、正文。 - 在
附件区域点击添加,设置:- 附件名称:直接填写对应文件名(如
TRANSACTOIN.xlsx)。 - 附件内容:选择上一步
获取 blob 内容动作输出的内容字段。
- 附件名称:直接填写对应文件名(如
可选优化
- 文件存在校验:在获取Blob内容前添加
Azure Blob Storage - 获取 blob 元数据动作,若返回错误(文件不存在),则在分支中发送"文件未找到"的提醒邮件,避免流程失败。 - 统一变量管理:提前创建变量存储Pipeline与文件名的映射关系,后续通过表达式
@{variables('FileMapping')[triggerBody()?.PipelineName]}直接获取对应文件名,减少重复配置。
内容的提问来源于stack exchange,提问作者Rohit Kulkarni
相关产品推荐
相关产品推荐

