- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在努力使用新的 MailChimp API 和批处理功能,特别是如何从批处理的底层操作(而不是批处理操作本身)返回任何错误。
我的代码如下,用于添加两个测试订阅者。响应仅显示整个批处理的成功:
[errored_operations] => 0
如果我再次运行它,它将返回类似的响应,但有两个错误:
[errored_operations] => 2
除此之外,没有任何迹象表明失败的原因或失败的原因。在这种情况下,我们知道这是因为用户已经订阅了。如果我尝试使用 POST/lists/{list_id}/members
添加单个用户而不进行批量调用,我会收到一条响应,其中详细说明了失败的原因。
stdClass Object
(
[type] => http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/
[title] => Member Exists
[status] => 400
[detail] => <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="224f43505b6248434149514d4c0c4c4756" rel="noreferrer noopener nofollow">[email protected]</a> is already a list member. Use PUT to insert or update list members.
[instance] =>
)
添加(或更新或删除)数百个订阅者时如何捕获单个错误?
我尝试过循环用户,进行多个单独的调用,这很有效:它添加了用户和/或提供了详细的错误报告。但是,当 API 设置为在单次调用中处理此问题时,进行 500 次调用似乎很愚蠢。感谢您的任何想法!
这是我的代码:
$list_id = 'xyz123';
$subscribers = array(
array(
'email' => '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b6dcd3d0d0f6dcd7d5ddc5d9d898d8d3c2" rel="noreferrer noopener nofollow">[email protected]</a>',
'status' => 'subscribed',
'firstname' => 'Jeff',
'lastname' => 'Jackson'
),
array(
'email' => '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="f59894878cb59f94969e869a9bdb9b9081" rel="noreferrer noopener nofollow">[email protected]</a>',
'status' => 'subscribed',
'firstname' => 'Mary',
'lastname' => 'Jackson'
)
);
$add_subs_batch = add_subs_batch($list_id, $subscribers);
echo '<pre>add_subs_batch: ';
print_r($add_subs_batch);
echo '</pre>';
function add_subs_batch($list_id, $data) {
$method = 'POST';
$batch_path = 'lists/' . $list_id . '/members';
$result = mc_request_batch($method, $batch_path, $data);
if($result && $result->id) {
$batch_id = $result->id;
$batch_status = get_batch_status($batch_id);
return $batch_status;
}
else {
return $result;
}
}
function get_batch_status($batch_id, $i=1) {
$method = 'GET';
$target = 'batches/'.$batch_id;
$result = mc_request($method, $target, $data);
sleep(1); // wait 1 second and try
if($result->status == 'finished' ) {
return $result;
}
else {
return get_batch_status($batch_id, $i+1);
}
}
function mc_request_batch( $method, $batch_path, $data = false ) {
$api_key = '12345-us1';
$dataCenter = substr($api_key,strpos($api_key,'-')+1);
$url = 'https://' . $dataCenter . '.api.mailchimp.com/3.0/';
$target = 'batches';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url . $target );
curl_setopt($ch, CURLOPT_USERPWD, 'user:' . $api_key);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST' );
curl_setopt($ch, CURLOPT_TIMEOUT, 10 );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt($ch, CURLOPT_USERAGENT, 'YOUR-USER-AGENT' );
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
if( $data ) {
$batch_data = new stdClass();
$batch_data->operations = array();
foreach ($data as $item) {
$batch = new stdClass();
$batch->method = $method;
$batch->path = $batch_path;
$batch->body = json_encode( array(
'email_address' => $item['email'],
'status' => $item['status'],
'merge_fields' => array(
'FNAME' => $item['firstname'],
'LNAME' => $item['lastname']
)
) );
$batch_data->operations[] = $batch;
}
$batch_data = json_encode($batch_data);
curl_setopt($ch, CURLOPT_POSTFIELDS, $batch_data );
$response = curl_exec( $ch );
}
curl_close( $ch );
return json_decode($response);
}
最佳答案
您将获得一个 id
作为批处理操作的响应。这是“批处理 ID”,它是唯一标识批处理请求的字符串。
要获取批量请求的状态,您必须对 URL /batches/{batch_id}
调用 GET 请求。
从响应中,您可以在 response_body_url
字段中找到一个 URL,其中包含批量调用中所有操作结果的 gzip 压缩存档。
引用:
Note
For security reasons, response_body_url is only valid for 10 minutes. After 10 minutes, generate another with a GET call to /3.0/batches/{batch_id}.
After you make the batch operation request, results are available for 7 days.
关于php - 如何从 MailChimp API v3.0 批量操作返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40137674/
法律要求我在所有允许选择退出的电子邮件中都有一个链接。似乎该链接是 |UNSUB|合并标签链接直接指向 MailChimp 托管取消订阅表单。这没有帮助,因为如果有人取消订阅,我希望能够更新我自己的外
使用Mailchimp API,我取消了列表用户的订阅。然后,我立即发送新请求,以使用Mailchimp API重新订阅同一用户。 我收到400错误的错误请求,并显示以下消息: (...) as si
我为邮件黑猩猩选择了“全角”模板,但我一生都无法更改每行的背景颜色。 它允许标题使用全宽颜色条,但不允许随后的 block 使用全宽颜色条。我可以在其中放置内联样式或嵌入式 css,但我不知道如何定位
我正在使用 MailChimp 发送批量电子邮件。我正在使用合并标签来做到这一点。问题是我无法向标签添加超过 255 个字符。任何解决这个问题? 最佳答案 没有解决该限制的方法,不。通常,如果您想在这
一言以蔽之 我已经在我的域上配置了 SPF 政策,但我收到了一份失败的 dmarc 报告。我不明白为什么会出现这种故障。 更多上下文 我为我的域配置了以下 spf 策略 zerowasteparis.
Mailchimp 将每个表单与一个列表联系起来。 我想在 Page1.html 上有一个注册表单,将用户发送到 Page1ty.html,在 Page2.html 上有另一个表单,将用户发送到 Pa
我想通过过滤我已应用于预期子集的标签 ('test_tag') 上的列表来为电子邮件列表的子集创建一个 mailchimp 事件。我不确定正确的语法是什么。我找不到任何关于如何使用标签以编程方式创建任
我有一个带有名称和电子邮件字段的新闻通讯表单,提交后会使用MailChimp API将其发送到/api.mailchimp.com/3.0/lists/####/members。 据我了解,MailC
我一直想使用 MailChimp API,由于 v3 已经发布,我想使用它。我看到有一个类似于 v2 ( https://apidocs.mailchimp.com/api/2.0/helper/se
我的网站允许用户通过 Drupal MailChimp 模块使用 API 订阅 MailChimp 列表。但是,如果用户通过电子邮件中的链接取消订阅,然后决定通过访问我的网站并选中“订阅”框来重新订阅
我刚刚开始使用 mailchimp 作为我正在编写的 asp.net mvc 应用程序的解决方案。 我正在尝试使用 mcapinet.codeplex.com 包装器。 我已经基于其中一个预先创建的模
我想使用 Mailchimp Api 3.0 向自动化工作流程添加订阅者,但我找不到 workflow_id 的位置或 workflow_email_id位于...这是来自文档: POST /auto
我想为给定的事件自动收集取消订阅和清理的电子邮件帐户。 在 API 游乐场中,我看到了 List 实体上可用的所有方法。 退订 我看到它在 LIST API 中GET reports/xxxxxx/u
我正在为我的 MailChimp 事件配置 DKIM。 除了选中“验证此事件”复选框以使我的域识别 MailChimp 之外,我还需要做什么?为此,我需要在我的机器上安装 openDKIM 吗? 最佳
我想按“时事通讯”、“用户”和“成员(member)”对我的用户进行分组,并通过 API 发送电子邮件,如何才能实现这一点:http://apidocs.mailchimp.com/api/1.3/i
目前,我在 PHP 页面上有一个注册表单,它允许用户输入他们的姓名和电子邮件地址。 按下时,它会向服务器发送 AJAX POST,接收 postdata 的 PHP 脚本会获取它并使用 MailChi
是否有机会通过 API 填写可重复的部分?例如,我有产品列表,我只想在模板中包含一次产品部分,然后遍历集合。我已经阅读了之前关于这个主题的讨论并用谷歌搜索,但我仍然不明白是否可以通过 API。
我正在使用“操场”来测试创建一个段,但我不断收到验证错误 我的请求: { "name": "MyTest", "options": { "match": "any",
我正在尝试使用 MailChimp API v3.0 创建一个新的营销事件,但我没有看到任何方法允许我在 API 的资源中进行此操作。有谁知道我该怎么做? 最佳答案 当我最初回答这个问题时,这是不可能
我正在升级 Mailchimp 集成以使用最新版本的 API (V3)。 在 API V2 中,事件对象有一个 Web_Id,它是一个整数,可用于创建可浏览的 URL 链接。 EG:admin.mai
我是一名优秀的程序员,十分优秀!