无法获取MailChimp API listUpdateMember来更改用户的电子邮件地址

时间:2013-06-26 10:22:53

标签: php laravel mailchimp mailchimp-api-v3.0

我正在尝试使用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用法的明显例子。

1 个答案:

答案 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”,因为它更能描述正在发生的事情)。