MailChimp:为什么 JavaScript 的 PUT 方法返回“使用 PUT 插入或更新列表成员”

问题描述 投票:0回答:3

我正在尝试使用 mailchimp API 3.0、Meteor 和 javascript 更新我的订阅者之一的状态。

这是我正在使用的js代码:

request({
  uri,
  list_id,
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'apikey (my api key)'
  },
  json,
}, function(err, res, body) {
  if (err) {
    return console.log("err:", err);
  }
  console.log("connection succeed");
  console.log("res: ", res.body);
  console.log("body: ", body);
});

  uri = "https://us15.api.mailchimp.com/3.0/lists/" + (id of my list) + "/members/" + (md5 of my user mail);

  json = {
    "email_address": (user mail as a string),
    "status": "unsubscribed"
  };

但我总是有相同的输出:

I20181204-18:42:12.714(8)? title: '成员存在', I20181204-18:42:12.714(8)?状态:400,I20181204-18:42:12.714(8)?详细信息:'(用户邮件地址)已经是列表成员。使用放置 插入或更新列表成员。'

但我已经在使用 PUT...如果这是我第一次添加用户,则该请求可与 POST 一起使用。但现在我无法更新我的用户状态... 我的请求或者我使用 API 的方式有问题吗?预先感谢。

编辑 1 -> 尝试使用 GET 不起作用。请求本身是正确的,但它对我的订阅者的状态没有影响。所以我仍然需要让 PUT 工作。

javascript meteor request mailchimp mailchimp-api-v3.0
3个回答
7
投票

在“编辑”选项卡中查看官方文档后,我找到了答案!

json 需要另一个强制参数,应如下所示:

  json = {
    "email_address":  (user mail as a string),
    "status_if_new": "unsubscribed",
    "status": "unsubscribed"
  };

2
投票

我知道这是一个较旧的问题,但我只是想添加一些内容,以防它对某人有帮助。 我间歇性地遇到类似的问题,我的大多数 PUT 请求按预期工作,有些则没有。 我花了一段时间,但最终我发现我的一些电子邮件地址末尾有空格。 就会出现这个错误。 在做任何事情之前修剪地址解决了我的问题。


0
投票

我遇到了同样的问题,发现我忘记在计算哈希值之前将电子邮件小写。这就是 Mailchimp API 验证哈希值的方式,这就是导致相当神秘的错误消息的原因。

在通过哈希函数运行电子邮件之前先将电子邮件小写,解决了我的问题。

© www.soinside.com 2019 - 2024. All rights reserved.