Node.js 使用Mailchimp API

Node.js 使用Mailchimp API,node.js,express,parse-platform,mailchimp,Node.js,Express,Parse Platform,Mailchimp,我想使用我的应用程序中的来为用户订阅邮件列表。Parse不支持NPM,但是,考虑到Mailchimp API没有依赖项,我想我可以将代码复制到我的项目中。然而,Mailchimp API使用了Parse不支持的“https”模块 有人知道解决这个问题的方法吗?我无法直接使用Mailchimp API,但REST API非常容易使用 在main.js中,创建一个云函数。输入API密钥并更新REST URL以指向正确的Mailchimp数据中心() var mailchimpApiKey=“”; d

我想使用我的应用程序中的来为用户订阅邮件列表。Parse不支持NPM,但是,考虑到Mailchimp API没有依赖项,我想我可以将代码复制到我的项目中。然而,Mailchimp API使用了Parse不支持的“https”模块


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

我无法直接使用Mailchimp API,但REST API非常容易使用

main.js中,创建一个云函数。输入API密钥并更新REST URL以指向正确的Mailchimp数据中心()

var mailchimpApiKey=“”;
define(“SubscribeUserToMailingList”,函数(请求、响应){
如果(!request.params)||
!request.params.email){
响应。错误(“必须向Mailchimp注册提供电子邮件地址、名字和姓氏”);
返回;
}
变量数据={
apikey:mailchimpApiKey,
id:request.params.listid,
电邮:{
电子邮件:request.params.email
},
合并变量:request.params.mergevars
}
变量url=”https://.api.mailchimp.com/2.0/lists/subscribe.json";
Parse.Cloud.httpRequest({
方法:“POST”,
url:url,
正文:JSON.stringify(mailchimpData),
成功:函数(httpResponse){
log(httpResponse.text);
响应。成功(“成功订阅”);
},
错误:函数(httpResponse){
console.error('请求失败,响应代码'+httpResponse.status);
错误(httpResponse.text);
response.error('Mailchimp订阅失败,响应代码为'+httpResponse.status');
}
});
});
然后,在调用此函数的代码中。。。(替换您的列表ID)

Parse.Cloud.run(“subscribeeusertomailglist”{
列表ID:“”,
电邮:电邮,,
合并变量:{
FNAME:firstName,
LNAME:姓氏
}
})
.然后(功能(成功){
console.log(“成功订阅”);
// ...
},
函数(错误){
console.log(“无法订阅”);
// ...
});
  • 在项目中安装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);
    

  • 下面是我如何使用MailChimp API v3.0实现的,下面的方法支持添加/更新订阅者,以及将订阅者添加到组中/从组中删除订阅者

    先决条件: 您需要使用MD5哈希方法将用户的电子邮件转换为哈希

    • 这是我用过的一个:
    • 复制链接中的代码,并将其粘贴到新创建的文件中,例如,将其命名为“md5js.js”
    • 更新复制的代码,以
      exports.MD5=函数(字符串){
    • 通过将结果与此在线工具进行比较,可以测试从复制/粘贴模块获得的转换:
    var jsmd5=require('cloud/md5js.js');
    //这里用您自己的数据中心替换它(通过查看API密钥)。
    var datacenter=“us13”;
    var MAILCHIMP_URL=“https://:@”+datacenter+”.api.MAILCHIMP.com/3.0/”;
    var MAILCHIMP_列表_通讯_ID=;
    define(“SubscribeUserToMailingList”,函数(请求、响应){
    如果(!request.params)||
    !request.params.email){
    响应。错误(“必须向Mailchimp注册提供电子邮件地址、名字和姓氏”);
    返回;
    }
    var email=request.params.email;
    var firstName=request.params.firstName;
    var lastName=request.params.lastName;
    //这会将电子邮件字符串转换为MD5哈希。
    //如果您想使用允许添加/更新条目的“PUT”,与只允许添加新订户的POST相比,这是必需的。
    var emailHash=jsmd5.MD5(电子邮件);
    变量数据={
    “电子邮件地址”:电子邮件,
    “状态”:“已订阅”,
    “合并字段”:{
    “FNAME”:名字,
    “LNAME”:姓氏
    },
    “利益”:{
    “”:true//如果要将用户添加到“组”,则为可选。
    }
    };
    var url=MAILCHIMP\u url+“列表/”+MAILCHIMP\u列表\u时事通讯\u ID+“/成员/”+emailHash;
    //使用“PUT”可以添加/更新条目。
    Parse.Cloud.httpRequest({
    方法:'放',
    url:url,
    正文:JSON.stringify(mailchimpData),
    成功:函数(httpResponse){
    log(httpResponse.text);
    响应。成功(“成功订阅”);
    },
    错误:函数(httpResponse){
    console.error('请求失败,响应代码'+httpResponse.status);
    错误(httpResponse.text);
    response.error('Mailchimp订阅失败,响应代码为'+httpResponse.status');
    }
    });
    
    })这应该是可以接受的答案。另外,您的数据中心是mail chimp api密钥的最后3个字符。我花了一分钟在文档中找到了这句话。您是否碰巧为Mailchimp api 3.0更新了这句话?@Ace Green:我为Mailchimp api 3.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);