Azure Logic Apps:添加CSV附件发送邮件时触发正文验证错误
逻辑应用CSV文件邮件发送失败的解决办法
问题根源
CSV文件里的逗号、换行、双引号这些特殊字符,在Get Blob Content获取内容后直接塞到Send Email的正文里时,会破坏邮件正文的格式校验规则——毕竟逻辑应用的Send Email对正文的HTML或纯文本格式有严格要求。其他格式文件是作为二进制附件发送的,不会把内容放进正文,所以没这问题。
具体解决步骤
方案1:别把CSV内容放进正文(最简单)
如果不需要在邮件正文显示CSV内容,直接修改Send Email的配置:
- 仅在附件栏绑定
Get Blob Content的Body输出,文件名用@{triggerBody()?['Name']}自动获取原文件名 - 正文填写固定内容即可,比如“指定文件夹收到新文件,附件已附上”
方案2:转义CSV里的特殊字符(需要显示内容时用)
要是必须在正文展示CSV内容,得先把特殊字符转义:
- 在
Get Blob Content和Send Email中间添加一个Compose步骤 - 在Compose的输入框中填入以下表达式,把特殊字符转成HTML实体:
replace(replace(replace(body('Get_Blob_Content'), '"', '"'), '<', '<'), '>', '>') - 将Send Email的正文字段绑定这个Compose步骤的输出
方案3:转成HTML表格展示(进阶美观版)
想让CSV内容在正文里更规整,可转成HTML表格:
- 添加一个Compose步骤,输入下面的表达式(默认CSV第一行为表头):
concat('<table border="1">', join(xpath(xml(concat('<root><row>', replace(replace(body('Get_Blob_Content'), '"', ''), '\n', '</row><row>'), '</row></root>')), '//row'), '<tr>', join(xpath(xml(concat('<root><cell>', replace(., ',', '</cell><cell>'), '</cell></root>')), '//cell'), '<td>', '</td>'), '</tr>'), '</table>') - 将Send Email的正文格式设置为HTML,再绑定Compose步骤的输出
额外提醒
- 检查Send Email的正文格式:用纯文本格式时要确保换行符能被正确识别,用HTML格式时必须转义特殊字符
- 将
Get Blob Content的编码设置为UTF-8,避免因乱码引发验证错误
内容的提问来源于stack exchange,提问作者jhTuppeny
相关产品推荐
相关产品推荐

