Mailchimp 不会忘记未订阅的用户

Posted

技术标签:

【中文标题】Mailchimp 不会忘记未订阅的用户【英文标题】:Mailchimp does not forget about unsubscribed users 【发布时间】: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 不会忘记未订阅的用户并阻止我在列表中添加两次相同的用户,即使它之前已被取消。

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

我解决了这个问题。基本上对于 mailchimp 而言,“未订阅”用户不是已删除的用户,因此即使状态不同,您也可以使用相同的电子邮件订阅两个用户。

我没有将它们的状态更改为“未订阅”,而是删除了它们:

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

【讨论】:

以上是关于Mailchimp 不会忘记未订阅的用户的主要内容,如果未能解决你的问题,请参考以下文章

通过 API 将 Mailchimp 成员添加为“未订阅”

取消订阅后将用户重新订阅到 MailChimp 列表

如何让已经订阅的用户再次订阅 Mailchimp/Aweber/GetResponse 列表

通过 MailChimp 2.0 API 为用户订阅群组

rails - Gibbon mailchimp gem 将订阅者添加到列表中,但不发送确认电子邮件

订阅时事通讯、mailchimp