Mailchimp - 我如何判断用户是否自行取消订阅?

Mailchimp - how can I tell if a user has unsubscribed themselves?

所以他们点击了新闻通讯中的取消订阅 link。在他们的个人资料中,它说,例如:

此人于 2017 年 3 月 24 日2:40 下午

退订

收到后"Newsletter Test#6"

很好,但是我如何通过 API 以编程方式判断是否有人自行取消订阅?有可能吗?我问的原因是因为你不能删除自己退订的人。如果您尝试,他们的数据将被擦除,但电子邮件地址将保留在您的列表中。此外,如果您尝试通过单击取消订阅 link 来订阅已取消订阅的人,您将得到 "john@example.com is in a compliance state due to unsubscribe, bounce, or compliance review and cannot be subscribed." 因此在这种情况下,我们应该检查他们是否自行取消订阅,如果是的话我们可以将他们的状态设置为待处理,这将发送确认选择加入电子邮件。否则,我们可以通过 API 订阅他们,而无需将他们的状态设置为待处理并向他们发送电子邮件并要求他们单击电子邮件中的 link。

来自 Mailchimp 支持:

当用户取消订阅时,您会看到参数 unsubscribe_reason,如果是管理员取消订阅或通过 API 完成的取消订阅,它会显示 "N/A (Unsubscribed by an admin)"。然而,如果它是由用户完成的,如果他们没有留下原因,它通常会说 "Unspecified" 或者它可能会显示用户取消订阅的原因。您可以在下面的 link 中阅读有关 unsubscribe_reason 参数的更多信息。

http://developer.mailchimp.com/documentation/mailchimp/reference/lists/members/

正如您所指出的,如果您尝试删除处于合规状态的某人,API 将拒绝您的请求,但不幸的是 return 没有任何有用的响应表明如此。另一方面,如果您尝试订阅处于合规状态的某人,您应该会收到 json 形式的响应,其中 status of 400 和相应的消息。在我的例子中,它看起来像这样:

{
    "type":"http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/",
    "title":"Member In Compliance State",
    "status":400,
    "detail":"johndoe@example.com is in a compliance state due to unsubscribe, bounce, or compliance review and cannot be subscribed.",
    "instance":"1234567890abcdefg"
}

如果您只是解析该响应,您可以检查 status 的值,这可能比文本描述符更可靠和向前兼容 - 如果适用,您可以将成员状态设置为 pending从那里开始。