Mailchimp 使用 API v3.0 订阅
Mailchimp Subscribe using API v3.0
我正在尝试将电子邮件订阅到 PHP 中的 MailChimp 列表。我实际上不是后端开发人员,所以我在这方面停滞不前:(
我正在使用 MailChimp 助手 PHP 库:https://github.com/drewm/mailchimp-api
我已经搜索了整个 Internet,我所能得到的只是 500 内部服务器错误状态。我已经在生产服务器中了。
<?php
include("./inc/MailChimp.php");
use \DrewM\MailChimp\MailChimp;
$api_key = "xxxxxxxxxxx-us13";
$list_id = "7xxxxxxx4";
$MailChimp = new MailChimp($api_key);
$result = $MailChimp->post("lists/$list_id/members", [
"email_address" => $_POST["txt_mail"],
'merge_fields' => ['FNAME'=>$_POST["txt_name"], 'FPHONE'=>$_POST["txt_phone"], 'FMSG'=>$_POST["txt_message"]],
"status" => "subscribed"
]);
if ($MailChimp->success()) {
echo "<h4>Thank you, you have been added to our mailing list.</h4>";
} else {
echo $MailChimp->getLastError();
} ?>
哦,伙计,你不知道这个问题让我在遇到它时有多沮丧。
幸运的是,我发现 Misha Rudrastyh 这个方便的东西与 API 3.0 配合得非常好。这是要点:
因为我使用的是 Wordpress,所以我首先将下面的代码放入我的 functions.php
文件中(这里是用您的变量编辑的)
<?php
function rudr_mailchimp_subscriber_status( $email, $status, $list_id, $api_key, $merge_fields = array('FNAME'=> '', 'FPHONE'=> '', 'FMSG'=> '') ){
$data = array(
'apikey' => $api_key,
'email_address' => $txt_mail,
'status' => $status,
'merge_fields' => $merge_fields
);
$mch_api = curl_init(); // initialize cURL connection
curl_setopt($mch_api, CURLOPT_URL, 'https://' . substr($api_key,strpos($api_key,'-')+1) . '.api.mailchimp.com/3.0/lists/' . $list_id . '/members/' . md5(strtolower($data['email_address'])));
curl_setopt($mch_api, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Authorization: Basic '.base64_encode( 'user:'.$api_key )));
curl_setopt($mch_api, CURLOPT_USERAGENT, 'PHP-MCAPI/2.0');
curl_setopt($mch_api, CURLOPT_RETURNTRANSFER, true); // return the API response
curl_setopt($mch_api, CURLOPT_CUSTOMREQUEST, 'PUT'); // method PUT
curl_setopt($mch_api, CURLOPT_TIMEOUT, 10);
curl_setopt($mch_api, CURLOPT_POST, true);
curl_setopt($mch_api, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($mch_api, CURLOPT_POSTFIELDS, json_encode($data) ); // send data in json
$result = curl_exec($mch_api);
return $result;
}
THEN 我在表单流程中添加了变量字段:
<?php
$email = $_POST['txt_mail'];
$FNAME=$_POST['txt_name'];
$FPHONE=$_POST['txt_phone'];
$FMSG=$_POST['txt_message'];
$status = 'pending'; // "subscribed" or "unsubscribed" or "cleaned" or "pending"
$list_id = 'xxxxxxxxxxx-us13'; // where to get it read above
$api_key = 'xxxxxxxxxxx-us13'; // where to get it read above
$merge_fields = array('FNAME' => $FNAME, 'FPHONE' => $FPHONE, 'FMSG' => $FMSG);
rudr_mailchimp_subscriber_status($email, $status, $list_id, $api_key, $merge_fields );
?>
希望对您有所帮助。我为此苦苦挣扎了一段时间,直到我意识到如何正确地做到这一点。
我正在尝试将电子邮件订阅到 PHP 中的 MailChimp 列表。我实际上不是后端开发人员,所以我在这方面停滞不前:(
我正在使用 MailChimp 助手 PHP 库:https://github.com/drewm/mailchimp-api
我已经搜索了整个 Internet,我所能得到的只是 500 内部服务器错误状态。我已经在生产服务器中了。
<?php
include("./inc/MailChimp.php");
use \DrewM\MailChimp\MailChimp;
$api_key = "xxxxxxxxxxx-us13";
$list_id = "7xxxxxxx4";
$MailChimp = new MailChimp($api_key);
$result = $MailChimp->post("lists/$list_id/members", [
"email_address" => $_POST["txt_mail"],
'merge_fields' => ['FNAME'=>$_POST["txt_name"], 'FPHONE'=>$_POST["txt_phone"], 'FMSG'=>$_POST["txt_message"]],
"status" => "subscribed"
]);
if ($MailChimp->success()) {
echo "<h4>Thank you, you have been added to our mailing list.</h4>";
} else {
echo $MailChimp->getLastError();
} ?>
哦,伙计,你不知道这个问题让我在遇到它时有多沮丧。
幸运的是,我发现 Misha Rudrastyh 这个方便的东西与 API 3.0 配合得非常好。这是要点:
因为我使用的是 Wordpress,所以我首先将下面的代码放入我的 functions.php
文件中(这里是用您的变量编辑的)
<?php
function rudr_mailchimp_subscriber_status( $email, $status, $list_id, $api_key, $merge_fields = array('FNAME'=> '', 'FPHONE'=> '', 'FMSG'=> '') ){
$data = array(
'apikey' => $api_key,
'email_address' => $txt_mail,
'status' => $status,
'merge_fields' => $merge_fields
);
$mch_api = curl_init(); // initialize cURL connection
curl_setopt($mch_api, CURLOPT_URL, 'https://' . substr($api_key,strpos($api_key,'-')+1) . '.api.mailchimp.com/3.0/lists/' . $list_id . '/members/' . md5(strtolower($data['email_address'])));
curl_setopt($mch_api, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Authorization: Basic '.base64_encode( 'user:'.$api_key )));
curl_setopt($mch_api, CURLOPT_USERAGENT, 'PHP-MCAPI/2.0');
curl_setopt($mch_api, CURLOPT_RETURNTRANSFER, true); // return the API response
curl_setopt($mch_api, CURLOPT_CUSTOMREQUEST, 'PUT'); // method PUT
curl_setopt($mch_api, CURLOPT_TIMEOUT, 10);
curl_setopt($mch_api, CURLOPT_POST, true);
curl_setopt($mch_api, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($mch_api, CURLOPT_POSTFIELDS, json_encode($data) ); // send data in json
$result = curl_exec($mch_api);
return $result;
}
THEN 我在表单流程中添加了变量字段:
<?php
$email = $_POST['txt_mail'];
$FNAME=$_POST['txt_name'];
$FPHONE=$_POST['txt_phone'];
$FMSG=$_POST['txt_message'];
$status = 'pending'; // "subscribed" or "unsubscribed" or "cleaned" or "pending"
$list_id = 'xxxxxxxxxxx-us13'; // where to get it read above
$api_key = 'xxxxxxxxxxx-us13'; // where to get it read above
$merge_fields = array('FNAME' => $FNAME, 'FPHONE' => $FPHONE, 'FMSG' => $FMSG);
rudr_mailchimp_subscriber_status($email, $status, $list_id, $api_key, $merge_fields );
?>
希望对您有所帮助。我为此苦苦挣扎了一段时间,直到我意识到如何正确地做到这一点。