LoginSignup
29
21

More than 5 years have passed since last update.

Mailchimp APIをRuby(Rails)で操作しよう

Last updated at Posted at 2016-03-31

メールマガジン配信ツールMailchimp( http://mailchimp.com/ )をRuby(Rails)で取り扱い
会員サービスを運営時に会員が退会した際や、メールアドレスを変更した際にメールマガジンのアドレスも削除・変更を行うようにする

前提条件

  • Mailchimpのサービスのアカウント作成済み
  • Mailchimpのメーリングリストを作成済みであること

APIキーの取得

MailchimpにログインしAPIキーを発行する。下記URLのやり方を参考にすれば簡単

accountセッティングを開き

account_settings.png

extras から API keysを選択する

スクリーンショット 2016-03-16 11.52.57.png

Create A Key のリンクをクリックすると

スクリーンショット 2016-03-16 11.53.02.png

このようにAPIを出力する

api_key.png

Ruby(Rails)で操作する

Mailchimpの公式のgem mailchimp-api-ruby がありこれを利用する
https://bitbucket.org/mailchimp/mailchimp-api-ruby/

APIのドキュメントページ

Railsの場合実装例

基本的にはドキュメントを読んで、やりたい内容をパラメタをつけてラップしたメソッドを用意してやると
アプリケーション上で使いやすいだろう

Gemfileにmailchimp-apiを追加

gem "mailchimp-api", require: "mailchimp"

 
app/models/mail_magazine.rb を以下のように作成する
それぞれのメソッドの説明は後述

mail_magazine.rb
class MailMagazine
  attr_accessor :mailchimp
  API_KEY = "YOUR_API_KEY_XXXXXXXXXXXXXXXXXXXXX"

  def initialize
    @mailchimp = Mailchimp::API.new(API_KEY)
  end

 # リストの情報を取得する
  def fetch_mailing_list
   # DOC: http://www.rubydoc.info/gems/mailchimp-api/2.0.6/Mailchimp/Lists#list-instance_method
   @mailchimp.lists.list
  end

  # リストに対象のメールアドレスがあるか?
  def member?(list_id, email)
    # 個別のリストの該当のユーザの情報を問い合わせてる、1ユーザの問い合わせだが引数が配列である必要がある。
    # 返り値のハッシュsuccess_countが1であればsubscribedな状態のユーザが存在する事となる
    # DOC: http://www.rubydoc.info/gems/mailchimp-api/2.0.4/Mailchimp%2FLists%3Amember_info
    result = @mailchimp.lists.member_info(list_id, [{email: email}])["success_count"]
    result > 0
  end

  # リストに追加
  def add_member(list_id, email)
    # 追加したことを相手に確認メールをせずに追加する
    # DOC: http://www.rubydoc.info/gems/mailchimp-api/2.0.4/Mailchimp%2FLists%3Asubscribe
    @mailchimp.lists.subscribe(
        list_id, {email: email}, {FNAME: user.first_name, LNAME: user.last_name}, "html", false)
  end

  # リストから削除
  def remove_member(list_id, email)
   # 相手に確認を取らずにリストから削除する
   # DOC: http://www.rubydoc.info/gems/mailchimp-api/2.0.4/Mailchimp%2FLists%3Aunsubscribe
    @mailchimp.lists.unsubscribe(list_id, {email: email}, true, false, false)
  end

使い方

メルマガのリストからハッシュを取ることが出来る

mail_magazine = MailMagazine.new
mail_magazine.fetch_mailing_list

対象のメアドがリストに存在するかチェック

mail_magazine = MailMagazine.new
mail_magazine. member?("id_xxxxx", "test@example.com")

対象のメアドをリストに追加する

mail_magazine = MailMagazine.new
mail_magazine.add_member("id_xxxxx", "test@example.com")

対象のメアドをリストから削除する

mail_magazine = MailMagazine.new
mail_magazine.remove_member("id_xxxxx", "test@example.com")
29
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
21