用于Rails的Mailchimp API – list.subscribe(:double_optin => false)无法正常工作

我正在使用mailchimp-api gem并且可以通过提交电子邮件并将确认电子邮件发送到已注册的电子邮件来获取提交的电子邮件,但我想禁用double_optin标志。 我试图这样做:

@mc = Mailchimp::API.new('my api key here') @mc.list.subscribe('list_id', {'email' => params[:email]}, :double_optin => false) 

这仍然是向该电子邮件地址发送确认电子邮件。

我真的不喜欢它如何重定向到mailchimp页面以确认您的订阅,并且必须单击另一个按钮才能重定向到该站点。 如果您可以自定义确认电子邮件,但这个通用确认页面很糟糕。

我想知道你是否必须有一个付费帐户才能切换:double_optin标志?

这是我在mailchimp-api中使用的

subscribe(id,email,merge_vars = nil,email_type =’html’,double_optin = true,update_existing = false,replace_interests = true,send_welcome = false)⇒哈希

double_optin是将被传递的参数

所以,我用过:

 client.lists.subscribe(@list_id, email, nil, 'html', false) 

结束使用以下内容:

 @mc = Mailchimp::API.new('my api key here') @mc.list.subscribe({:id => 'list_id', :email => {:email => params[:email]}, :double_optin => false}) 

请注意,这里的区别是@mc.list.subscribe中的每个参数都在哈希中。

使用subscribe方法接受的答案不起作用,仍然会发送确认电子邮件,但使用batch_subscribe方法很容易做到这一点。

首先,创建一个包含要添加(或只是一个)的每个订阅者的哈希的数组,如下所示:

 subscribers = [{ "EMAIL" => { "email" => user.email}, :EMAIL_TYPE => 'html', :merge_vars => { "NAME" => user.name } }] 

然后,使用batch_subscribe方法,如下所示:

 mailchimp = Mailchimp::API.new(MAILCHIMP_API_KEY) mailchimp.lists.batch_subscribe(MAILCHIMP_LIST_ID, subscribers, false, false, false) 

最后的三个“falses”按顺序引用:double_optin,update_existing和replace_interests。 您可以将这些设置为true或false,但如果您想跳过发送确认电子邮件,则double_optin必须为“false”。

以下是batch_subscribe方法的文档 。

通过mailchimp-api gem后我发现了这个解决方案

 @mc.list.subscribe('list_id', { email: params[:email] }, nil, double_optin = false) 

这只是扩展了@Jordan上面的答案来解释为什么这样做以及为什么接受的答案是不正确的。

如果您使用的是mailchimp-api gem,您可以在文档中看到单个订阅的格式是subscribe(id, email, merge_vars = nil, email_type = 'html', double_optin = true, update_existing = false, replace_interests = true, send_welcome = false) 。 经过大量的猜测和测试,我发现他们不希望你传递参数名称 ,只传递值。 所以,虽然我最初在函数中传递了double_optin: false ,但它们实际上只是希望你传递false作为第5个参数。 换句话说,这对我有用:

 mailchimp = Mailchimp::API.new('mailchimp_api_key') subscribe = mailchimp.lists.subscribe( 'list_ID_number', { email: user.email }, { fname: user.first_name, lname: user.last_name }, 'html', false, false, false, false ) 

请注意,第二个和第三个参数(email和merge_vars)作为哈希值传递,因为这是在上面引用的文档中定义这些参数的方式。

进行更改(删除参数名称)后,订阅会直接通过,而不会发送确认电子邮件。