【发布时间】:2017-04-10 01:42:08
【问题描述】:
我在从我的 mailchimp 列表中取消订阅电子邮件时遇到问题。
基本上我有一个有电子邮件的用户。当用户订阅我的服务时,我会通过 gem gibbon 自动将他的电子邮件插入到我的 mailchimp 列表中(服务器是 Ruby on Rails v2.2.3)
@@gibbon = Gibbon::Request.new(api_key: ENV['MAILCHIMP_API_KEY'])
@@list = 'list_id'
...
@@gibbon.lists(@@list).members.create(body: {email_address: email, status: "subscribed", merge_fields: {FNAME: first_name, LNAME: full_name}})
创建帐户后,用户显然可以更改他的电子邮件地址。如果他这样做了,我会将新电子邮件添加到 mailchimp 列表并删除旧电子邮件:
begin
@@gibbon.lists(@@list).members.create(body: {email_address: email, status: "subscribed", merge_fields: {FNAME: first_name, LNAME: full_name}})
rescue => e
render :json => {
:error => true,
:message => "Email already present",
:user => u,
:personal_link => u.current_link
}
return
end
member = @@mailchimp.lists(@@list).members(u.email)
member.update status: "unsubscribed"
这在大多数情况下都可以正常工作。 当我尝试用旧电子邮件更改电子邮件时,问题就来了:
0) 使用电子邮件“test@gmail.com”订阅网站
工作正常。
1) 在我的帐户中,我将电子邮件从“test@gmail.com”更改为“test1@gmail.com”
工作正常,我在 mailchimp 列表中不再看到我的旧电子邮件,而是看到了新电子邮件。
2) 将我的电子邮件从“test1@gmail.com”改回“test@gmail.com”
Mailchimp 抛出此错误:
#<Gibbon::MailChimpError: the server responded with status 400 @title="Member Exists", @detail="test@gmail.com is already a list member.
问题是我在数据库中没有使用此电子邮件的任何用户,并且我的 mailchimp 列表中没有使用该电子邮件的任何用户。 这就像 mailchimp 不会忘记未订阅的用户并阻止我在列表中添加两次相同的用户,即使它之前已被取消。
我该如何解决这个问题?
【问题讨论】:
标签: ruby-on-rails ruby email mailchimp