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

Cloudflare Worker调用SparkPost API遇字符串类型错误及换行需求

解决SparkPost API「content.text/html must be a string」错误及换行问题

一、错误原因

  • 「content.text must be a string」:jsonData.city或jsonData.state可能未传入(请求无该字段),或本身非字符串类型,导致拼接后的message不符合API要求的字符串格式。
  • 「content.html must be a string」:模板字符串误用双引号包裹,${city}未被解析为变量值;若变量未定义,最终生成的html内容也会不符合字符串要求。

二、修正代码示例

1. 纯文本邮件(解决text字段错误+换行)

async function sendEmail(request, SPARKPOST_API_KEY) {
    const jsonData = await request.json();
    // 给字段设置默认空字符串,避免undefined
    const city = jsonData.city || '';
    const state = jsonData.state || '';
    // 用\n实现纯文本换行
    const message = `${city}\n${state}`;

    const body = JSON.stringify({
      options: {
        sandbox: false,
      },
      content: {
        from: FROM_EMAIL,
        subject: 'Data Submission',
        text: message
      },
      recipients: [{ address: TO_EMAIL }],
    });

    // 补充SparkPost API请求逻辑
    const response = await fetch('https://api.sparkpost.com/api/v1/transmissions', {
      method: 'POST',
      headers: {
        'Authorization': SPARKPOST_API_KEY,
        'Content-Type': 'application/json'
      },
      body: body
    });
    return response;
}

2. HTML邮件(解决html字段错误+换行)

async function sendEmail(request, SPARKPOST_API_KEY) {
    const jsonData = await request.json();
    const city = jsonData.city || '';
    const state = jsonData.state || '';
    // 用<p>标签或<br>实现HTML换行
    const message = `<p>${city}</p><p>${state}</p>`;
    // 也可写成:`${city}<br>${state}`

    const body = JSON.stringify({
      options: {
        sandbox: false,
      },
      content: {
        from: FROM_EMAIL,
        subject: 'Data Submission',
        html: message
      },
      recipients: [{ address: TO_EMAIL }],
    });

    // 补充SparkPost API请求逻辑
    const response = await fetch('https://api.sparkpost.com/api/v1/transmissions', {
      method: 'POST',
      headers: {
        'Authorization': SPARKPOST_API_KEY,
        'Content-Type': 'application/json'
      },
      body: body
    });
    return response;
}

三、关键注意事项

  • 始终给city、state设置默认空字符串,避免出现undefined或null导致非字符串值。
  • 模板字符串必须用**反引号()**包裹,才能正确解析${变量}`语法。
  • 纯文本邮件用\n换行,HTML邮件用<br>标签或<p>标签实现换行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 17:40:32