0

下面的代码是使用 Node JS 和 Mailchimp 库以编程方式将联系人添加到列表/受众的 API 调用。文档位于:https ://mailchimp.com/developer/marketing/guides/create-your-first-audience/#add-a-contact-to-an-audience

const listId = "YOUR_LIST_ID";
const subscribingUser = {
 firstName: "Prudence",
 lastName: "McVankab",
 email: "prudence.mcvankab@example.com"
};

async function run() {
const response = await mailchimp.lists.addListMember(listId, {
  email_address: subscribingUser.email,
  status: "subscribed",
  merge_fields: {
    FNAME: subscribingUser.firstName,
    LNAME: subscribingUser.lastName
  }
});

console.log(
  `Successfully added contact as an audience member. The contact's id is ${
    response.id
  }.`
);
}
run();

这是我在 app.js 中实现代码的方式

app.post("/", function(req, res) {
 const firstName = req.body.firstName;
 const lastName = req.body.lastName;
 const email = req.body.email;

 const apiAudienceName = "Sample Tech Newsletter Subscription";

 const listId = apiAudienceName;
 const subscribingUser = {
  firstName: firstName,
  lastName: lastName,
  email: email
 };

 async function run() {
   const response = await mailchimp.lists.addListMember(listId, {
     email_address: subscribingUser.email,
     status: "subscribed",
     merge_fields: {
       FNAME: subscribingUser.firstName,
       LNAME: subscribingUser.lastName
     }
   });

   console.log(`Successfully added contact as an audience member. The contact's id is ${response.id}.`);

 }

 run();
});

对我来说,我确实按照 Mailchimp 服务器的确切要求添加到我创建的列表中,但是这段代码抛出了一个错误,说“未处理的承诺拒绝”。当然,我已经尝试过进行研究,但作为这门语言的初学者,我并不太了解实现这一目标需要什么。如果有人可以纠正我或向我展示我的代码中的错误,我将不胜感激。非常感谢!

注意:我能够通过使用 HTTP 请求模块来完成这项工作。但是这次,我想学习如何遵循文档并使用他们给定的代码和库。对我来说,似乎我做到了,但似乎没有用。

4

2 回答 2

0

通过我所在的课程社区的研究和帮助,我在我的代码中发现了问题。我希望这对正在处理/可能处理相同问题的人有所帮助。

const apiAudienceName = "Sample Tech Newsletter Subscription";

const listId = apiAudienceName;

正如您在上面的代码中看到的,我将在 Mailchimp 网站中创建的“列表/受众名称”listID输入到变量中。问题是 Mailchimp API 需要的listID不是您在 Mailchimp API 中拥有的列表的名称。

解决此问题的答案是list/audience ID从您在 Mailchimp 网站上的帐户中获取并将其用作输入。这list/audience ID是 Mailchimp 服务器提供的字母数字字符。

如果您想要详细的查找指南list/audience ID,请查看此链接

这是解决此问题的示例代码:

app.post("/", function(req, res) {
 const firstName = req.body.firstName;
 const lastName = req.body.lastName;
 const email = req.body.email;

 const listId = "1a2b3c4d5e777";
 const subscribingUser = {
  firstName: firstName,
  lastName: lastName,
  email: email
 };

 async function run() {
  const response = await mailchimp.lists.addListMember(listId, {
   email_address: subscribingUser.email,
   status: "subscribed",
   merge_fields: {
     FNAME: subscribingUser.firstName,
     LNAME: subscribingUser.lastName
   }
 });

 console.log(`Successfully added contact as an audience member. The contact's id is ${response.id}.`);

 }

 run();
});
于 2021-06-29T16:43:00.460 回答
0

你试过subsribi吗?它有一个简单的 API,您可以使用 JavaScript 将订阅者添加到您的列表中,

  • 例子:

    const data = { email:"sarah@mail.com", //* 必填用户名:"sarah", //可选 listId:'[LIST_ID]',

    }
      const url = 'https://api.subscribi.io/v1/subscribers/add'
      fetch(url,{
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
          'secret_key':'MY_SECRET_KEY' //  Go the the settings and generate a key
        }, 
        body: JSON.stringify(data)
      }).then(response =>{
        console.log(response)
        /*
        {
          "data": {
              "name": "sarah",
              "email": "sarah@mail.com",
              "createdAt": "2020-09-25T19:41:07.350Z",
              "subscribed": true
          },
          "ok": true,
          "status": "success"
      }
    
        */
      }).catch(error=>{
        console.error(error)
      }) 
    
于 2021-07-06T22:08:00.037 回答