2016-11-25 47 views
0

從郵件列表中找到unsubrscibe郵件時遇到問題。Mailchimp不會忘記取消訂閱的用戶

基本上我有一個用戶的電子郵件。當用戶訂閱我的服務,我自動插入他的電子郵件到通過寶石長臂猿我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)訂閱與電子郵件「[email protected]

正常工作的網站。

1)從我的賬戶更改我的電子郵件從「[email protected]」到「[email protected]

工作得很好,我沒有看到了我的舊電子郵件中mailchimp列表我看到了新的。

2)從 「[email protected]」 到 「[email protected]

Mailchimp改回我的電子郵件引發此錯誤:

#<Gibbon::MailChimpError: the server responded with status 400 @title="Member Exists", @detail="[email protected] is already a list member. 

的問題是,我不有任何用戶在數據庫中使用此電子郵件,並且我沒有任何用戶在我的mailchimp列表中使用該電子郵件。 這就像mailchimp不會忘記未經驗證的用戶,並阻止我在列表中添加兩次相同的用戶,即使它之前已被取消。

我該如何解決問題?

回答

0

我解決了這個問題。基本上,對於mailchimp,「取消訂閱」的用戶不是已刪除的用戶,因此即使用戶的狀態不同,您也可以使用同一封電子郵件訂閱兩位用戶。

而是改變他們的狀態爲「取消訂閱」我刪除了他們:

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