超级简单、最低抽象的 MailChimp API v3 包装器,采用 PHP 语言。
我讨厌复杂的包装。这使您可以尽可能直接地从 MailChimp API 文档获取代码。
需要 PHP 5.3 和脉冲。抽象是针对黑猩猩的。
您可以使用 Composer 安装 mailchimp-api:
composer require drewm/mailchimp-api
然后您将需要:
运行composer install
将这些依赖项添加到您的供应商目录中
使用以下行将自动加载器添加到您的应用程序: require("vendor/autoload.php")
或者,您可以只下载MailChimp.php
文件并手动包含它:
包括('./MailChimp.php');
如果您希望使用批处理请求或 Webhook 接口,您还需要下载并包含Batch.php
或Webhook.php
文件:
包括('./Batch.php'); 包括('./Webhook.php');
这些都是可选的。如果您不使用批处理或网络钩子,则可以跳过它们。您可以随时回来添加它们。
首先use
类并使用您的 API 密钥创建一个实例
使用 DrewMMailChimpMailChimp;$MailChimp = new MailChimp('abc123abc123abc123abc123abc123-us1');
然后,列出所有邮件列表(使用get
lists
方法)
$结果 = $MailChimp->get('列表');print_r($结果);
订阅某人到列表(通过lists/{listID}/members
方法发布post
):
$list_id = 'b1234346';$result = $MailChimp->post("lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => '订阅', ]);print_r($结果);
使用更多信息更新列表成员(使用patch
更新):
$list_id = 'b1234346';$subscriber_hash = MailChimp::subscriberHash('[email protected]');$result = $MailChimp->patch("lists/$list_id/members/$subscriber_hash", [ 'merge_fields' = > ['FNAME'=>'戴维', 'LNAME'=>'琼斯'], '兴趣' => ['2s3a384h' => true], ]);print_r($结果);
使用delete
方法删除列表成员:
$list_id = 'b1234346';$subscriber_hash = MailChimp::subscriberHash('[email protected]');$MailChimp->delete("lists/$list_id/members/$subscriber_hash");
使用success()
方法快速测试操作是否成功:
$list_id = 'b1234346';$result = $MailChimp->post("lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => '订阅', ]);if ($MailChimp->success()) { print_r($result); } else { echo $MailChimp->getLastError(); }
MailChimp 批量操作功能使您能够通过一次调用完成多个操作。一个很好的例子是将数千名成员添加到列表中 - 您可以在一个请求中执行此操作,而不是数千名。
使用 DrewMMailChimpMailChimp;使用 DrewMMailChimpBatch;$MailChimp = new MailChimp('abc123abc123abc123abc123abc123-us1');$Batch = $MailChimp->new_batch();
然后,您可以像通常使用MailChimp
对象一样对Batch
对象发出请求。不同之处在于您需要为操作设置一个 ID 作为第一个参数,而且您不会得到响应。该 ID 用于在批处理操作的组合响应中查找该请求的结果。
$Batch->post("op1", "lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => '订阅', ]);$Batch->post("op2", "lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => '订阅', ]);$Batch->post("op3", "lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => '订阅', ]);
完成该批处理中应包含的所有请求后,您需要执行它。
$结果= $Batch->execute();
结果包括批次 ID。稍后,您可以检查批次的状态:
$MailChimp->new_batch($batch_id);$结果 = $Batch->check_status();
批次完成后,您可以从响应中给出的 URL 下载结果。在 JSON 中,每个操作的结果都将由您用作请求第一个参数的 ID 作为键控。
注意:使用 Webhooks 功能至少需要 PHP 5.4。
MailChimp Webhooks 使您的代码能够收到列表和活动更改的通知。
设置 Webhook 时,您可以在服务器上指定要发送数据的 URL。该包装器的 Webhook 类可帮助您以简洁的方式捕获传入的 Webhook。它使用订阅模型,您的代码可以订阅它想要侦听的任何 Webhook 事件。您提供一个回调函数,Webhook 数据将传递到该回调函数。
监听unsubscribe
webhook:
使用 DrewMMailChimpWebhook; Webhook::subscribe('取消订阅', function($data){ print_r($data); });
乍一看,订阅/取消订阅看起来很混乱 - 您的代码正在订阅 MailChimp unsubscribe
Webhook 事件。回调函数作为单个参数传递 - 一个包含 webhook 数据的关联数组。
如果您只想捕获所有网络钩子并自己处理它们,您可以使用:
使用 DrewMMailChimpWebhook;$result = Webhook::receive();print_r($result);
似乎没有任何有关 webhook 数据内容的文档。使用 ngrok 之类的工具将 Webhooks 隧道传输到您的开发计算机会很有帮助 - 然后您可以使用其 Web 界面来检查已发送的内容并在调试代码时重放传入的 Webhook。
要获取 HTTP 客户端或 API 返回的最后一个错误,请使用getLastError()
:
回声 $MailChimp->getLastError();
为了进一步调试,您可以检查响应的标头和正文:
print_r($MailChimp->getLastResponse());
如果您怀疑您发送的数据格式错误,您可以查看包装器发送到 MailChimp 的内容:
print_r($MailChimp->getLastRequest());
如果您的服务器的 CA 根证书不是最新的,您可能会发现 SSL 验证失败并且没有收到响应。纠正此问题的解决方案不是禁用 SSL 验证。解决方案是更新您的证书。如果您不能这样做,类文件顶部有一个选项。请不要在没有尝试更新您的证书的情况下就将其关闭——这是懒惰且危险的。你不是一个懒惰、危险的开发者,对吗?
如果您对项目有高级实施问题(“如何将其添加到 WordPress”、“我有一个需要电子邮件地址的表单...”),请将它们带到 StackOverflow 等地方。如果您认为自己发现了错误,或者想讨论更改或改进,请随时提出问题,我们将共同解决。
这是一个相当简单的包装器,但由于使用它的人的贡献,它已经变得更好了。如果您想提出改进建议,请在提出拉取请求之前提出问题进行讨论。
我们非常欢迎针对错误提出拉取请求 - 请在消息中解释您要修复的错误。
有少量 PHPUnit 单元测试。针对 API 的单元测试显然有点棘手,但我欢迎对此做出任何贡献。如果有更多的测试覆盖率那就太好了。