如何将Azure Blob存储中的最新文件附加到Logic Apps Send Email(Outlook)的邮件正文中?
实现Logic Apps发送带最新Blob文件的邮件
我来一步步帮你搞定这个需求,核心就是让Logic Apps精准找到Blob存储里的最新文件,再把它附到Outlook邮件里。下面是具体操作步骤:
第一步:获取Blob存储的文件列表并排序
首先在你的工作流里添加Azure Blob存储的Get Blobs操作:
- 配置好对应的Blob存储账户和目标容器;
Blob type选Block blob(根据你的实际存储类型调整即可);- 关键设置:在
Order by里选Last modified,排序方向设为Descending(降序),这样最新修改的文件会直接排在列表第一位。
第二步:提取最新的单个文件
因为Get Blobs会返回所有符合条件的文件,我们只需要第一个(也就是最新的那个),可以用两种方式处理:
- 直接用表达式:后续操作里直接写
first(body('Get_Blobs'))?['Id']就能拿到最新Blob的唯一标识; - 更清晰的方式:加一个
Compose操作,把上面的表达式放进去,后续直接引用这个Compose的输出就行。
第三步:获取最新Blob的内容
接下来添加Get Blob Content操作,用来读取文件内容:
- 选择对应的Blob存储账户;
- 在
Blob选项里,选择之前拿到的最新Blob的Id(或者直接引用Compose的输出); - 一定要勾选
Include blob content type,这样邮件附件能自动识别正确的文件类型。
第四步:配置Outlook发邮件操作
最后到Send Email (Outlook)环节:
- 填好收件人、主题、邮件正文这些基础信息;
- 在
Attachments区域点击Add new item:Name:用表达式first(body('Get_Blobs'))?['Name']获取最新文件的原名;Content:选择Get Blob Content操作里的Blob content输出;Content type:选择Get Blob Content操作里的Blob content type输出。
额外优化:针对日期命名的文件过滤
因为你的文件名是按日期命名的(比如20240520_data.csv),还可以在Get Blobs的Filter里加规则,只获取当天的文件再取最新,减少返回数据量提升效率。比如用这个表达式:
contains(name, formatDateTime(utcNow(), 'yyyyMMdd'))
这样整个工作流就能自动定位最新Blob并附加到邮件里了,亲测好用!
内容的提问来源于stack exchange,提问作者MADFROST
相关产品推荐
相关产品推荐

