MailChimp:为啥带有 javascript 的 PUT 方法返回“使用 PUT 插入或更新列表成员”

Posted

技术标签:

【中文标题】MailChimp:为啥带有 javascript 的 PUT 方法返回“使用 PUT 插入或更新列表成员”【英文标题】:MailChimp: Why is PUT method with javascript returning "Use PUT to insert or update list members"MailChimp:为什么带有 javascript 的 PUT 方法返回“使用 PUT 插入或更新列表成员” 【发布时间】:2019-05-05 18:51:48 【问题描述】:

我正在尝试使用 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)?标题:'成员存在', I20181204-18:42:12.714(8)?状态:400,I20181204-18:42:12.714(8)? detail: '(用户邮件地址)已经是列表成员。使用 PUT 插入或更新列表成员。'

但我已经在使用 PUT...如果这是我第一次添加用户,则该请求适用于 POST。但是现在我无法更新我的用户状态... 我的请求或我使用 API 的方式有问题吗?提前致谢。

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

【问题讨论】:

【参考方案1】:

在“编辑”标签中查看the official doc后,我找到了答案!

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于MailChimp:为啥带有 javascript 的 PUT 方法返回“使用 PUT 插入或更新列表成员”的主要内容,如果未能解决你的问题,请参考以下文章

mc:edit 在带有 Mandrill Javascript API 的 Mailchimp 模板中不起作用

MailChimp (Mandrill) for .NET 为啥电子邮件包含图像?

使用 Javascript 调用模态

为啥我应该使用 MailChimp 或类似工具而不是自定义脚本? [复制]

为啥我一直使用 mailchimp API 获取 http 状态代码 400

如何使用带有mailchimp的python发送单个邮件