【Ruby on Rails】3分でRails5でメール送信する方法を身につける

3分でRails5でメール送信するために必要な前提条件

1. Ruby on Rails5 で「Yay! You’re on Rails!」を出したことがある
2. 送信するために必要なSMTPの情報があるもしくはGmailを使っている

1はrails sを実行してRailsおなじみの「Yay! You’re on Rails!」を出せる状態ならばOKです。
2はGmailなどでSMTPの設定をしたことがある人ならさらっとできます。SMTP(Simple Mail Transfer Protocol シンプル メール トランスファー プロトコル)とはメールを送るために必要なものです。Gmailを持っている場合はサーバー名、ポート番号があらかじめ決まっているので調べる必要がありません。

GmailのSMTP基本設定情報

SMTPサーバー名:smtp.gmail.com
SMTPポート番号:465
メールアドレス: xxxxx@gmail.com (自分が持っているGmailメールアドレス)
ドメイン名:gmail.com

Rails5で必要なSMTP情報

SMTPサーバー名、SMTPポート番号、ドメイン名、ユーザー名(所有しているメールアドレス)、パスワード、ホスト名です。

RailsでSMTPの設定をする

config/environments/development.rb で設定を行います。

例えば開発環境でSMTPの情報が下記の場合

SMTPサーバー名:smtp.gmail.com
SMTPポート番号:465
メールアドレス: test@gmail.com
ドメイン名:gmail.com
パスワード:password
(2段階認証を設定している場合はあらかじめ解除する必要があります)

設定は下記のとおりになります。

重要なポイントはtlsをtrueにすることとhostの設定です。
tlsがないときやhostの設定を間違えるとエラーになります。hostは「127.0.0.1」以外にも「localhost」などで設定されている場合があるので気をつけましょう。

Rails5のMailerを使えるようにする

rails sを実行してRailsのページが表示されることを確認してから下記コマンドを実行しましょう。

appにmailersディレクトリが作成されます。

app/mailers/message_mailer.rbの設定をメールの送信テストをするために下記のように変更します。

ポイントはfromの部分は必ずSMTPで設定したメールアドレスを使うことです。間違えるとメールが送れない場合があります。toのアドレスは宛先で送りたいメールアドレスを設定して下さい。これで設定はすべて完了です。一度rails sを実行してRailsのページが表示されることを確認しましょう。もし設定にミスがある場合ページが正しく表示されませんので設定を見直しましょう。次にMailerの設定したのが動作するのかテスト送信する方法を説明します。

Rails5でメール送信テストをする

でrailsのコンソールに入ります。

でメール送信テストをします。

Railsコンソールを抜けるときには

で抜けることができます。