在我的应用程序中,我想在创建时自动将用户订阅到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: ""}})
******** ******** EDIT
按此conversation。
我认为错误发生是因为电子邮件地址已经存在于列表中。我第一次收到错误时,电子邮件地址被添加到MailChimp列表中,但由于另一个错误,我的应用程序中未创建用户。现在,当我尝试使用相同的电子邮件地址创建用户时,错误400会弹出,因为电子邮件已存在。这也可以防止在我的应用程序中创建用户。
有经验的人可以验证这是否正确吗?
答案 0 :(得分:1)
您是正确的 - 如果您正在进行POST
来电并且您发布的内容已经存在,那么您将收到错误消息。在API支持PUT
之前,更新或订阅是两步操作。检查订户是否存在,然后使用适当的方法。或者,您可以先尝试PATCH
,如果失败了,请先POST
。