如何使用 Mailchimp API 3.0 和 Gibbon 2.x 订阅新用户

Posted

技术标签:

【中文标题】如何使用 Mailchimp API 3.0 和 Gibbon 2.x 订阅新用户【英文标题】:How to subscribe new users with Mailchimp API 3.0 and Gibbon 2.x 【发布时间】:2015-11-24 07:31:23 【问题描述】:

在我的应用程序中,我想在用户创建时自动订阅 MailChimp 列表。我找到的所有文档都集中在 MailChip API 2.0 和 Gibbon 1.x 上。

这是我目前所拥有的:

我创建了一个 .env 文件:

MAILCHIMP_API_KEY = "my_api_key"
MAILCHIMP_LIST_ID = "my_list_id"

我创建了一个名为 gibbon.rb 的初始化器:

Gibbon::Request.api_key = ENV["MAILCHIMP_API_KEY"]
Gibbon::Request.timeout = 15

然后创建了一个 Job:

class SubscribeUserToMailingListJob < ActiveJob::Base
  queue_as :default

  def perform(user)
    gibbon = Gibbon::Request.new
    # I am getting errors from this line
    gibbon.lists(ENV["MAILCHIMP_LIST_ID"]).members.create(body: email_address: user.email, status: "subscribed", merge_fields: FNAME: user.name, LNAME: "")
  end
end

在我的 user.rb 中检查后我有这个

after_create :subscribe_user_to_mailing_list

并在私有下添加了这个:

def subscribe_user_to_mailing_list
  SubscribeUserToMailingListJob.perform_later(self)
end

我收到来自gibbon.lists(ENV["MAILCHIMP_LIST_ID"]).members.create(body: email_address: user.email, status: "subscribed", merge_fields: FNAME: user.name, LNAME: "") 的 400 错误

********编辑********

根据这个conversation。

我认为发生错误是因为该电子邮件地址已存在于列表中。我第一次遇到错误时,电子邮件地址已添加到 MailChimp 列表中,但由于另一个错误,该用户未在我的应用程序中创建。现在,当我尝试使用相同的电子邮件地址创建用户时,会弹出错误 400,因为该电子邮件已经存在。这也可以防止在我的应用程序中创建用户。

请有经验的人验证一下这是否正确?

【问题讨论】:

【参考方案1】:

您是对的——如果您正在拨打POST 并且您发布的内容已经存在,您将收到一个错误回复。在 API 支持PUT 之前,更新或订阅是一个两步操作。检查订阅者是否存在,然后使用适当的方法。或者,您可以先尝试PATCH,如果失败并返回 404,则执行 POST

【讨论】:

以上是关于如何使用 Mailchimp API 3.0 和 Gibbon 2.x 订阅新用户的主要内容,如果未能解决你的问题,请参考以下文章

如何从 MailChimp 3.0 API 获取兴趣组?

Mailchimp 如何在 javascript 中调用 mailchimp 3.0 API

如何使用 php 将 Mailchimp API 3.0 的“购物车”和“购物车行”添加到自定义商店?

使用 API 3.0 实现 Mailchimp 双重选择加入

如何使用 Mailchimp API 3.0 从用户或兴趣中获取超过 10 个条目?

如何通过 MailChimp 3.0 api 发送电子邮件?