Power Automate中通过HTTP从Outlook发送Base64遇请求错误求助
解决Power Automate中Outlook PDF附件Base64传输问题
核心问题分析
Get Attachment(V2)返回的contentBytes是二进制数据,直接放入HTTP查询参数会被自动URL编码,导致服务器识别为原始PDF内容而非Base64。- 重复使用
base64()函数会造成二次编码,破坏正确的Base64格式。 - 请求过长是因为Base64内容体积较大,直接放在URL参数里超出了长度限制。
分步解决方案
1. 正确生成Base64编码
- 添加
Get Attachment(V2)动作获取目标邮件的PDF附件。 - 添加
Compose动作,输入表达式:base64(body('Get_Attachment(V2)')?['contentBytes'])注意:仅对
contentBytes二进制数据做一次Base64编码,不要嵌套多次base64()函数。
2. 避免URL编码,正确传递参数
不要将Base64内容放在HTTP请求的查询参数中,改为放在**请求体(Body)**里以JSON格式传递:
- 配置HTTP动作的请求方法为
POST(或服务器要求的对应方法)。 - 在请求体中使用如下JSON结构:
这种方式下Power Automate不会对请求体内的Base64内容做URL编码,服务器可直接识别。{ "pdf_base64": "@{outputs('Compose')}" }
3. 处理大附件请求过长问题
如果PDF附件过大导致Base64内容超出请求体限制,可尝试两种方案:
- 确认服务器是否支持分块上传,若支持则拆分Base64内容分多次请求发送。
- 使用Power Automate Premium连接器中的
Azure Blob Storage,先将附件上传至Blob存储,再把Blob的SAS共享访问URL发送给服务器,让服务器自行下载附件,避免直接传递大体积Base64。
验证步骤
- 运行流后查看
Compose动作的输出,确认开头为JVBERi0xLjYN(PDF标准Base64开头)。 - 查看HTTP动作的请求体详情,确认Base64内容未被转义(无
%PDF-1.6这类URL编码字符)。
内容的提问来源于stack exchange,提问作者Łukasz Paradowski
相关产品推荐
相关产品推荐

