Mailchimp API для Rails — list.subscribe(:double_optin =› false) не работает

Я использую драгоценный камень mailchimp-api и могу заставить отправленное электронное письмо работать, отправив электронное письмо и отправив электронное письмо с подтверждением на это электронное письмо, которое зарегистрировалось, но я хочу отключить флаг double_optin. Я пытаюсь сделать это с помощью:

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

Это все еще отправляет электронное письмо с подтверждением на этот адрес электронной почты.

Мне действительно не нравится, как он перенаправляет на страницу mailchimp, чтобы вы подтвердили свою подписку и должны были нажать другую кнопку, чтобы перенаправить на сайт. Если бы вы могли настроить электронное письмо с подтверждением, это было бы одно, но наличие этой общей страницы подтверждения ужасно.

Мне интересно, нужно ли вам иметь платную учетную запись, чтобы иметь возможность переключать флаг :double_optin?


person NomNomCameron    schedule 21.12.2013    source источник


Ответы (5)



Это просто расширяет ответ @Jordan выше, чтобы объяснить, почему это работает и почему принятый ответ неверен.

Если вы используете гем 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: 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) были переданы как хэши, потому что именно так эти параметры определены в упомянутой выше документации.

После внесения этого изменения (удаления имен параметров) подписки прошли без писем с подтверждением.

person lacoder    schedule 08.07.2018

Закончилось тем, что это работало со следующим:

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

Обратите внимание, что разница здесь в том, что каждый параметр в @mc.list.subscribe находится в хеше.

person NomNomCameron    schedule 27.10.2014
comment
Это не работает, генерирует эту ошибку с неправильным количеством аргументов (учитывается 1, ожидается 2..8) - person Muhammad Hamza; 21.10.2019

Принятый ответ с использованием метода 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)

Три «ложных» в конце относятся по порядку к: double_optin, update_existing и replace_interests. Вы можете установить для них значение true или false, но double_optin должен быть «false», если вы хотите пропустить отправку электронного письма с подтверждением.

Вот документация для batch_subscribe метод.

person koanima    schedule 14.01.2015

Пройдя через гем mailchimp-api, я нашел это решение

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