Mailgunを使ってメールを送る(1) ~herokuからメールを送る編~

herokuでメールを送ろうと思ってmailgunを触ってみた。
sendgridを選択しなかったのは、mailgunのが見栄えが好きだからだけです....(認証に失敗して、めんどくなったわけでは...)

大まかな手順

  • herokuのaddonを追加するためにcard情報を登録
  • mailgunのaddonを追加する
  • rest_clientをgemfileに追加(smtpではなくhttpで送るために必要)
  • とりあえずメールを飛ばしてみる

詳細はこちらを参照

herokuのaddonを追加するためにcard情報を登録

仕方ないのでクレジットカード、登録しましょう。

mailgunのaddonを追加する

herokuに登録しているappのディレクトリに行ってコマンドを実行

heroku addons:add mailgun

herokuのaddonの画面でmailgunを探して、そこから登録でもOK

rest_clientのgemを追加

rest_clientのgemを追加する

コマンドでとりあえずメールを飛ばしてみる

まずはherokuのコンソールを立ち上げる

heroku run console

その後、以下を入力

require 'rest_client'

API_KEY = ENV['MAILGUN_API_KEY']
DOMAIN = "xxxxxxxxx.mailgun.org"
API_URL = "https://api:#{API_KEY}@api.mailgun.net/v2/#{DOMAIN}"

RestClient.post API_URL+"/messages",
    :from => "me@#{DOMAIN}",
    :to => "hoge@example.com",
    :subject => "This is subject",
    :text => "Text body",
    :html => "<h1>Hoge</h1><p>aaaaaaaaaaa aaaaaaaaaa aaaaaaaaaaaa</p>"

DOMAINは、mailgunの管理画面の"Domains"のメニューに表示されるDomain Nameを入れればOK。

管理画面は以下のコマンドで開ける

heroku addons:open mailgun

API_KEYはaddonを追加したら自動的にherokuの環境変数に登録されているみたい。
確認したい場合は

heroku config