Mailchimp不会忘记未订阅的用户

时间:2016-11-25 15:55:48

标签: ruby-on-rails ruby email mailchimp

我遇到来自mailchimp列表的unsubrscibe电子邮件时遇到问题。

基本上我有一位有电子邮件的用户。当用户订阅我的服务时,我会通过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.

问题是,我没有任何用户在数据库中收到此电子邮件,而且我没有&#39;在我的mailchimp列表中有任何用户使用该电子邮件。 它&#39;像mailchimp一样,不会忘记未被删除的用户,并阻止我在列表中添加两次相同的用户,即使它之前已被取消。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。基本上对于mailchimp a&#34;取消订阅&#34;用户不是已删除的用户,因此即使状态不同,您也可以使用相同的电子邮件订阅两个用户。

而不是将其状态更改为&#34;取消订阅&#34;我删除了它们:

email_hash = Digest::MD5.hexdigest(u.email).downcase
@@gibbon.lists(@@list).members(email_hash).delete