可以';t获取MailChimp API listUpdateMember以更改用户';的电子邮件地址


Can't get MailChimp API listUpdateMember to change a user's email address

当会员在我们的网络应用程序中更改电子邮件时,我正尝试使用MailChimp API更新他们的电子邮件地址。

我正在使用Laravel MailChimp捆绑包,它运行得很好(我可以订阅用户、更新分组、更新名称等),但我必须使用merge_var或其他不正确的东西。

我使用这个:

$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_var"EMAIL"answers"NEW-EMAIL",我在这篇stackoverflow文章中读到了这一点。我确实再次尝试使用listSubscribe,尽管它是一个现有的成员,但失败了,因为$响应说该成员已经订阅了。

关于我哪里可能出错,有什么建议吗?我还没有找到这种listUpdateMember api用法的明确示例。

事实证明,答案非常简单。

https://twitter.com/MailChimp_API/status/351674145609748480

显然,合并中根本不需要NEW-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"真的没有必要(或者应该删除电子邮件,只使用"NEW-EMAIL",因为它更能描述正在发生的事情)。

如果您已经更新为使用MailChimp API v3,那么有一种新的方法可以做到这一点。

/lists/members端点上使用patchput方法。

email_address是您推送的对象的"顶级"属性(与merge_fields处于同一级别,在API 2中称为merge_vars),表示新的电子邮件地址。

MailChimp文档

相关文章: