使用 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 很容易使用。
在 main.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?
如何使用 python mailchimp3 库查询 Mailchimp API?