我正在尝试使用MailChimp API更新会员在我们的网络应用中更改电子邮件时的电子邮件地址。
我正在使用Laravel MailChimp bundle并且它工作得很好(我可以订阅用户,更新分组,更新名称等),但我必须使用merge_vars或其他错误。
我用这个:
$member_details = array(
// grabbed from config and working (also API key handled by bundle)
'id' => $id,
// passed from function - corresponds to the old email address
'email_address' => $mailchimp_old_email,
'merge_vars' => array(
// Old email again?
'EMAIL' => $mailchimp_old_email,
// new email address
'NEW-EMAIL' => $mailchimp_new_email,
),
'replace_interests' => FALSE,
);
$response = Mailchimp::listUpdateMember($member_details);
所以“$ response = 1”,这让我觉得它有用,但是当我在MailChimp上查看订阅者列表时,用户的电子邮件没有改变。
1.3 API文档的listSubscribe详细介绍了merge_vars“EMAIL”和“NEW-EMAIL”,我在this stackoverflow post上阅读了它。我确实尝试再次使用listSubscribe,即使它是一个现有的成员,但是这个失败了,回复说该成员已经订阅了。
有关我可能出错的地方的任何建议?我还没有找到这种listUpdateMember api用法的明显例子。
答案 0 :(得分:8)
事实证明答案非常简单。
https://twitter.com/MailChimp_API/status/351674145609748480
显然在merge_vars中根本不需要NEW-EMAIL - 只需要EMAIL。
所以我的案例中的工作代码是:
$member_details = array(
// grabbed from config and working (also API key handled by bundle)
'id' => $id,
// passed from function - corresponds to the old email address
'email_address' => $mailchimp_old_email,
'merge_vars' => array(
// new email address
'EMAIL' => $mailchimp_new_email,
),
'replace_interests' => FALSE,
);
$response = Mailchimp::listUpdateMember($member_details);
这很直接。 “NEW-EMAIL”之类的感觉确实没有必要(或者应删除EMAIL,只使用“NEW-EMAIL”,因为它更能描述正在发生的事情)。