メールマガジン配信ツールMailchimp( http://mailchimp.com/ )をRuby(Rails)で取り扱い
会員サービスを運営時に会員が退会した際や、メールアドレスを変更した際にメールマガジンのアドレスも削除・変更を行うようにする
前提条件
- Mailchimpのサービスのアカウント作成済み
- Mailchimpのメーリングリストを作成済みであること
APIキーの取得
MailchimpにログインしAPIキーを発行する。下記URLのやり方を参考にすれば簡単
accountセッティングを開き
extras から API keysを選択する
Create A Key のリンクをクリックすると
このようにAPIを出力する
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")