認証用のメール送信機能が必要になり、無料で簡単に使えるメールサーバーを探していたところHerokuと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固定になる。
ユーザー名とパスワードの設定が少し独特な感じがしました。
以上です。
コメント/ピンバック