Heroku add-onのSendGridを使ってRuby on railsでメール送信する方法

HEROKU Ruby Ruby on rails SendGrid サービス フレームワーク プログラミング

認証用のメール送信機能が必要になり、無料で簡単に使えるメールサーバーを探していたところHerokuとSendGrid というメール配信サービスが簡単に連携できることを知りました。

SendGrid | メールを成功の原動力に。

今回はSendGridのSMTPサーバーを使ってrailsでメール送信する設定をメモしておきます。

SendGridとHerokuを連携する

Heroku add-onからSendGridを探して連携します。

SendGridと連携するにはHerokuにクレジットカード情報を登録しておく必要がありますが、無料で使えます。

SendGrid – Add-ons – Heroku Elements

↓「Install SendGrid」ボタンを押します。

↓プランは「Starter – Free」を選択肢、SendGridを連携させたいアプリを選び、「Provision add-on」ボタンをクリックして少し待てば連携完了です。

SendGridでAPIキーを生成する

次に、SMTPのパスワードにつかうAPIキーを発行します。

HerokuのアプリのResourcesタブからSendGridを選択。

SendGridの管理画面に移動するので、左メニュの「Sender Whiz」→「Setup Guide」を選択。

Integrate using our Web API or SMTP relayの「Start」ボタンを押す。

SMTP Relayを選択。

My First API Key Nameにキーの名前を入れて「Create Key」ボタンを押します。

キー名は何でもいいです。

キーが生成されて、自動的にセットされます。

この時表示されたキーをSMTPのパスワードとして使うので、必ずメモしておきましょう。

I’ve updated my settings.にチェックを入れて、Next: Verify Integrationボタンを押します。

ボタンを押して、動作確認用のメールを送ります。

確認失敗してもこの時点でキーは生成済みで使えます。

railsでSMTPの設定をする

railsのAction MalerでSMTPの設定をします。

config/environments/development.rb に以下の設定を追加します。

  config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.perform_deliveries = true 
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.smtp_settings = {
    :enable_starttls_auto => true,
    :address => "smtp.sendgrid.net",
    :port => 587,
    :domain => 'smtp.sendgrid.net',
    :user_name => "apikey",
    :password => "上で設定したAPI Key",
    :authentication => :plain
  }

user_nameはapikey固定になります。

passwordに先ほどSendGridで設定したAPI Keyを指定します。

これでrailsのAction Malerでメールが送れるようになるはずです。

まとめ

  • Heroku add-onでSendGridと連携する。
  • SendGridでAPI Keyを発行する。
  • API KeyをSMTPのパスワードに使う。
  • SMTPのユーザー名はapikey固定になる。

ユーザー名とパスワードの設定が少し独特な感じがしました。

以上です。

コメント/ピンバック

タイトルとURLをコピーしました