You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Macro Scheduler(.scp)宏中将图片编码为Base64字符串?

解决Macro Scheduler中图片转Base64并内嵌邮件的问题

你遇到的核心问题是直接将图片路径传入Base64函数无法获取正确的编码结果——因为Macro Scheduler的Base64处理函数需要的是文件的二进制数据,而不是文件路径。下面是完整的解决方案步骤和代码示例:

步骤1:读取图片的二进制数据

首先必须用ReadFile命令读取图片文件的原始二进制内容,一定要加上BIN参数,否则会把图片当成文本文件读取,导致后续编码完全错误。

步骤2:将二进制数据转为Base64字符串

用Base64Encode命令把读取到的二进制数据转换成符合要求的Base64编码字符串。

步骤3:嵌入到HTML邮件内容中

把生成的Base64字符串放到HTML的<img>标签的src属性里,格式为data:image/[图片格式];base64,[Base64字符串](注意替换[图片格式]为实际的png/jpg等)。

完整代码示例

// 定义图片的绝对路径,替换成你的图片路径
Let>IMAGE_PATH=C:\path\to\your\image.png

// 读取图片二进制数据
ReadFile>%IMAGE_PATH%,BIN,imageBinaryData

// 转换为Base64编码
Base64Encode>imageBinaryData,imageBase64

// 构建带内嵌图片的HTML邮件内容
Let>emailHTML=<!DOCTYPE html>
Let>emailHTML=%emailHTML%<html>
Let>emailHTML=%emailHTML%  <body>
Let>emailHTML=%emailHTML%    <h3>这是一封带内嵌图片的邮件</h3>
Let>emailHTML=%emailHTML%    <p>下方是内嵌的图片:</p>
Let>emailHTML=%emailHTML%    <img src="data:image/png;base64,%imageBase64%" alt="内嵌图片" width="300">
Let>emailHTML=%emailHTML%  </body>
Let>emailHTML=%emailHTML%</html>

// 发送HTML格式邮件(根据你的邮件配置调整参数)
SendMail>recipient@example.com,sender@example.com,带内嵌图片的测试邮件,,,%emailHTML%,,HTML

关键注意事项

  • 必须加BIN参数:ReadFile命令的BIN参数是读取二进制文件的核心,漏掉它会导致读取的内容被错误解析为文本,Base64编码必然失效。
  • 图片格式要匹配:data:image/png;base64中的png要和你的图片实际格式一致(比如jpg就改成data:image/jpeg;base64)。
  • 使用绝对路径:尽量用图片的绝对路径,避免因Macro Scheduler工作目录问题导致找不到文件。

内容的提问来源于stack exchange,提问作者KKar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:45:11