使用 Mailchimp API

Posted

技术标签:

【中文标题】使用 Mailchimp API【英文标题】:Use the Mailchimp API 【发布时间】:2014-08-04 14:15:44 【问题描述】:

我想在我的Parse Cloud Hosting 应用程序中使用Mailchimp Node.js API 为用户订阅邮件列表。 Parse 不支持 NPM,但鉴于 Mailchimp API 没有依赖项,我想我可以将代码复制到我的项目中。但是,Mailchimp API 使用 Parse 不支持的“https”模块。

有人知道解决这个问题的方法吗?

【问题讨论】:

【参考方案1】:

我一直无法直接使用 Mailchimp API,但 REST API 很容易使用。

ma​​in.js 中,创建一个云函数。输入您的 API 密钥并更新 REST URL 以指向正确的 Mailchimp 数据中心 (http://apidocs.mailchimp.com/api/2.0/)

var mailchimpApiKey = "<<REPLACE_WITH_YOUR_KEY>>";

Parse.Cloud.define("SubscribeUserToMailingList", function(request, response) 

  if (!request.params ||
        !request.params.email)
    response.error("Must supply email address, firstname and lastname to Mailchimp signup");
    return;
  

  var mailchimpData = 
    apikey  : mailchimpApiKey,
    id      : request.params.listid,
    email   : 
      email : request.params.email
    ,
    merge_vars : request.params.mergevars
  

  var url = "https://<<REPLACE_WITH_DATA_CENTRE>>.api.mailchimp.com/2.0/lists/subscribe.json";

  Parse.Cloud.httpRequest(
    method: 'POST',
    url: url,
    body: JSON.stringify(mailchimpData),
    success: function(httpResponse) 
      console.log(httpResponse.text);

      response.success("Successfully subscribed");
    ,
    error: function(httpResponse) 
      console.error('Request failed with response code ' + httpResponse.status);
      console.error(httpResponse.text);

      response.error('Mailchimp subscribe failed with response code ' + httpResponse.status);
    
  );

);

然后,在调用此函数的代码中...(替换您的列表 ID)

Parse.Cloud.run("SubscribeUserToMailingList", 
    listid      : "<<REPLACE_WITH_LIST_ID>>",
    email       : email,
    mergevars   : 
        FNAME   : firstName,
        LNAME   : lastName
    
)
.then(function(success)
    console.log("Successfully subscribed");
    // ...
,
function(error)
    console.log("Unable to subscribe");
    // ...
);

【讨论】:

这应该是公认的答案。此外,您的数据中心是邮件黑猩猩 api 密钥的最后 3 个字符。我花了一分钟在文档中找到那个小句子 您是否碰巧为 Mailchimp API 3.0 更新了这个? @Ace Green:我添加了 MailChimp API 3.0 的代码 ***.com/a/36099176/1776163【参考方案2】:

    在你的项目中安装 mailchimp

    npm install mailchimp-api
    

    从客户端控制器调用所需数据的服务器控制器 不要忘记在控制器顶部添加$http

    $http(
        method : 'POST',
        url : '/mailchimp-users/subscribe',
        data : user:this.name).
            success(function(response) 
        console.log("hai this is basic test" + response);
        $scope.send = response.message;
    ).error(function(response) 
        $scope.error = response.message;
    );
    

    在服务器控制器中 将此添加到页面的开头

    var MailchimpUser = mongoose.model('MailchimpUser'),
    _ = require('lodash'),
    mcapi = require('mailchimp-api');
    var apiKey = '4bf6fb8820c333da4179216c3c2ef8fb-us10';
    // Change this to your Key
    var listID = 'ebbf193760';
    var mc = new mcapi.Mailchimp(apiKey, version: '2.0');
    

    添加此功能

    exports.subscribe = function(req, res) 
        var entry = req.body.user;
        var mcReq = 
            apikey: '4bf6fb8820c333da4179216c3c2ef8fb-us10',
            id: 'ebbf193760',
            email: email: entry + '@gmail.com',
            merge_vars: 
                FNAME: 'subscriber-first-name',
                LNAME: 'subscriber-last-name'
            ,
            'double_optin': false,
            'send_welcome': true
        
        // submit subscription request to mail chimp
        mc.lists.subscribe(mcReq, function(data) 
            console.log(data);
        , function(error) 
            console.log(error);
        );
    ;
    

    将此路线添加到您的路线文件

    app.route('/mailchimp-users/subscribe')
       .post(mailchimpUsers.subscribe);
    

【讨论】:

【参考方案3】:

以下是我使用 MailChimp API v3.0 使其工作的方法,下面的方法支持添加/更新订阅者,以及在群组中添加/删除订阅者! p>

先决条件: 您需要获取一个 MD5 哈希方法来将用户的电子邮件转换为哈希。

这是我用的那个:http://www.webtoolkit.info/javascript-md5.html#.Vuz-yjZOwXV 复制链接中的代码,粘贴到新建的文件中,例如命名为“md5js.js”。 更新您复制的代码以exports.MD5 = function (string) 开头 您可以通过将结果与此在线工具进行比较来测试从复制/粘贴模块获得的转换:http://www.miraclesalad.com/webtools/md5.php

    var jsmd5 = require('cloud/md5js.js');

    // here replace that with your own data center (by looking at your API key).
    var datacenter = "us13";
    var MAILCHIMP_URL = "https://<any_string>:<apikey>@" + datacenter + ".api.mailchimp.com/3.0/";
    var MAILCHIMP_LIST_NEWSLETTER_ID = <yourlistId>;

    Parse.Cloud.define("SubscribeUserToMailingList", function(request, response) 

      if (!request.params ||
            !request.params.email)
        response.error("Must supply email address, firstname and lastname to Mailchimp signup");
        return;
      

      var email = request.params.email;
      var firstName = request.params.firstname;
      var lastName = request.params.lastname;

      // this converts the email string into an MD5 hash.
      // this is Required if you want to use a "PUT" which allows add/update of an entry, compared to the POST that allows only adding a new subscriber.
      var emailHash = jsmd5.MD5(email);

      var mailchimpData = 
        'email_address': email,
        'status': "subscribed",
        'merge_fields': 
          'FNAME': firstName,
          'LNAME': lastName
        ,
        'interests': 
          "<groupID>": true  // optional, if you want to add the user to a "Group".
        
      ;

      var url = MAILCHIMP_URL + "lists/" + MAILCHIMP_LIST_NEWSLETTER_ID + "/members/" + emailHash;

      // using a "PUT" allows you to add/update an entry.
      Parse.Cloud.httpRequest(
        method: 'PUT',
        url: url,
        body: JSON.stringify(mailchimpData),
        success: function(httpResponse) 
          console.log(httpResponse.text);

          response.success("Successfully subscribed");
        ,
        error: function(httpResponse) 
          console.error('Request failed with response code ' + httpResponse.status);
          console.error(httpResponse.text);

          response.error('Mailchimp subscribe failed with response code ' + httpResponse.status);
        
      );
    );

【讨论】:

以上是关于使用 Mailchimp API的主要内容,如果未能解决你的问题,请参考以下文章

使用 API 将 Mailchimp 集成到 Laravel

我应该如何为其 API 使用 MailChimp JSON Schema?

如何使用 ruby​​ 处理 mailchimp 模板?

如何使用 python mailchimp3 库查询 Mailchimp API?

使用 API 3.0 实现 Mailchimp 双重选择加入

使用 Mailchimp 的 API v3 将订阅者添加到列表