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

Mailchimp API返回'INVALID RESOURCE'错误,email_address为空求助

问题:Mailchimp API 返回 "email_address 不能为空" 错误,但已从请求体获取邮箱

我已从请求体中获取email并赋值给email_address,但Mailchimp API仍返回错误:

Error 404 INVALID RESOURCE

终端显示的具体错误信息:

type: 'https://mailchimp.com/developer/marketing/docs/errors/',
  title: 'Invalid Resource',
  status: 400,
  detail: "The resource submitted could not be validated. For field-specific details, see the 'errors' array.",   
  errors: 
      field: 'email_address',
      message: 'This value should not be blank.'

以下是我的app.js代码:

const express=require("express");
const bodyParser=require("body-parser");
const path = require("path");
const https=require("https");
const app=express();
app.use(bodyParser.urlencoded({extended:true}))
app.use(express.static(path.join(__dirname,'public')));
app.get("/",function(req,res){
    res.sendFile(__dirname+"/index.html");
})
app.post("/",function(req,res){
    var firstName=(req.body.firstname);
    var lastname=(req.body.lastname);
    var email= (req.body.email);
    var data={
        members: [
        {
            email_address:email,  //I have named the input tag as email
            satus:'subscribed',
            merge_fields:{
                FNAME: firstName,
                LNAME: lastname
         }
       }
     ]
    }
    const url="https://us21.api.mailchimp.com/3.0/lists/{list-id}/members"
    const JSONData=JSON.stringify(data);
    const options={
        method: "POST",
        auth: "THIRSTYMOB:{api-key}"
    }
    const request=https.request(url,options,function(response){
    console.log("running");
    response.on("data",function(data){
        console.log("running");
        console.log(JSON.parse(data));
    })
})

    request.write(JSONData);
    request.end();
   

});
app.listen("5000",function(req,res){
    console.log("listening on");
});

我已尝试从请求体获取email并存储到email_address中,但仍提示该字段为空,请问问题出在哪里?


问题排查与解决

1. 关键拼写错误:satus 应为 status

你在构造成员数据时,把订阅状态的字段名拼写成了 satus,而Mailchimp API要求的正确字段名是 status。这个拼写错误会导致API无法正确解析你的请求结构,进而误判 email_address 字段为空。

修正后代码片段:

{
    email_address: email,
    status: 'subscribed', // 修正拼写错误
    merge_fields: {
        FNAME: firstName,
        LNAME: lastname
    }
}

2. 验证请求体数据是否正确获取

在POST路由中添加日志,确认后端是否真的拿到了邮箱值:

app.post("/",function(req,res){
    var firstName=req.body.firstname;
    var lastname=req.body.lastname;
    var email= req.body.email;
    
    // 添加日志验证数据
    console.log("获取到的邮箱:", email);
    console.log("获取到的名:", firstName);
    console.log("获取到的姓:", lastname);
    
    // 后续数据构造和请求代码...
})

如果日志显示email为空,需要检查前端表单:

  • 确保输入邮箱的input标签name属性值为email(大小写严格匹配,req.body的键名和input的name完全一致)
  • 确认表单的method属性为POST,action属性指向后端的/路由

3. 其他必要修正

  • 替换URL中的{list-id}为你真实的Mailchimp列表ID
  • 替换{api-key}为你真实的Mailchimp API密钥
  • 确认API密钥的区域后缀(如us21)和URL中的区域一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 14:35:26