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

调用Brevo SMTP API发送含终端可点击链接邮件的JSON格式问题

问题分析与解决

核心问题

你用的是终端专属的OSC 8超链接语法(\e]8;;URL\e\文本\e]8;;\e\),这是给终端渲染用的特殊转义序列,但Brevo的SMTP API需要的是标准HTML格式的邮件内容,同时JSON不允许包含未转义的控制字符(比如\e对应的ESC不可打印字符),这才导致了「Input must be a valid JSON object」错误。

解决方案

1. 替换终端链接为标准HTML超链接

把终端专属的链接语法换成邮件客户端能识别的HTML <a> 标签:

printf -v email_body "Click here: <a href='file://1.2.3.4/backup/backup.txt'>Backup.txt</a>"

2. 正确生成合法的JSON字符串

手动转义JSON特殊字符(双引号、反斜杠、换行等)容易出错,推荐用jq工具自动处理JSON生成,避免格式问题:
假设你的完整请求需要组合header、body、footer,示例如下:

# 定义各部分内容
email_header="<h1>Backup Notification</h1>"
email_body="Click here: <a href='file://1.2.3.4/backup/backup.txt'>Backup.txt</a>"
email_footer="<p>Automated message</p>"

# 用jq生成合法的JSON请求体
json_payload=$(jq -n \
  --arg header "$email_header" \
  --arg body "$email_body" \
  --arg footer "$email_footer" \
  '{
    "subject": "Your Backup is Ready",
    "htmlContent": $header + $body + $footer,
    "sender": {"name": "Backup Bot", "email": "bot@example.com"},
    "to": [{"email": "user@example.com"}]
  }')

# 用curl发送请求
curl -X POST "https://api.brevo.com/v3/smtp/email" \
  -H "Content-Type: application/json" \
  -H "api-key: YOUR_BREVO_API_KEY" \
  -d "$json_payload"

为什么之前的转义没用?

你之前尝试转义\e为\\e,但\\e在bash里会被解析成字面量\e,而JSON里的\e并不是合法的转义序列(JSON只支持\"、\\、\/、\b、\f、\n、\r、\t这些转义),加上终端的OSC 8语法本身就不是HTML/JSON兼容的格式,所以无论怎么转义终端控制字符都没用,必须换成标准HTML链接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 16:52:41