如何在Logic App中将ADF Lookup活动输出作为邮件附件发送
将ADF Lookup输出作为邮件附件传递给Logic App的实现方案
步骤1:预处理Lookup活动的输出
Lookup活动的输出是JSON数组格式(@{activity('Lookup活动名称').output.value}),直接传递需先转换成适合附件的格式:
- 若以JSON文件作为附件:用
@string(activity('Lookup活动名称').output.value)将数组序列化为JSON字符串。 - 若以CSV文件作为附件:添加Set Variable活动,用表达式把数组转成CSV格式(替换为你的实际列名):
其中@concat('列名1,列名2,列名3',uriComponentToString('%0A'),join(activity('Lookup活动名称').output.value,uriComponentToString('%0A')))uriComponentToString('%0A')用于生成换行符,保证CSV格式正确。
步骤2:配置For Each内的Web活动
在For Each活动的Web活动中,把预处理后的内容通过请求体传递给Logic App:
- Web活动请求方法设为
POST,URL填入Logic App的HTTP触发器地址。 - 请求体示例(以JSON附件为例):
如果是CSV附件,把{ "attachmentContent": "@string(activity('Lookup活动名称').output.value)", "attachmentName": "lookup-result.json" }attachmentContent替换为你之前设置的变量值即可。
步骤3:在Logic App中接收并生成邮件附件
- 用当HTTP请求收到时作为Logic App的触发器,导入以下请求体架构(匹配ADF传递的字段):
{ "type": "object", "properties": { "attachmentContent": { "type": "string" }, "attachmentName": { "type": "string" } } } - 添加**发送电子邮件(V2)**活动,在附件配置中:
- 附件名称:
@{triggerBody()?['attachmentName']} - 附件内容:
@{base64(triggerBody()?['attachmentContent'])}
邮件附件要求内容为Base64编码,所以用base64()函数转换传递过来的文本内容。
- 附件名称:
额外注意事项
- 如果Lookup返回的数据量较大,超过HTTP请求体大小限制,建议先把结果写入Blob存储,将Blob的SAS URL传递给Logic App,由Logic App读取Blob内容并作为附件。
- For Each活动默认并行执行,若你的业务不需要并行调用Logic App,可将并行度设为1,避免触发频率过高。
内容的提问来源于stack exchange,提问作者amikm
相关产品推荐
相关产品推荐

