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

时间:2015-08-29 22:34:12

标签: ruby-on-rails mailchimp ruby-on-rails-4.2 gibbon

在我的应用程序中,我想在创建时自动将用户订阅到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错误

******** ******** EDIT

按此conversation

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

有经验的人可以验证这是否正确吗?

1 个答案:

答案 0 :(得分:1)

您是正确的 - 如果您正在进行POST来电并且您发布的内容已经存在,那么您将收到错误消息。在API支持PUT之前,更新或订阅是两步操作。检查订户是否存在,然后使用适当的方法。或者,您可以先尝试PATCH,如果失败了,请先POST