RailsのActionMailerでメール送信

Rails アプリケーションで ActionMailer を使ってのメール送信テストを行いました。拍子抜けするくらい簡単に実装できて、またも Rails の凄さを実感しました!

— 環境 —
Rails 5.0.0.1

【追記 2016/11/08】
現時点での Rails 最新バージョンである Rails 5.0.0.1 で、ActionMailer によるメール送信が正常に動作することを確認しました。

一点だけ補足しますと、Rails 5 では独自の Mailer クラスは ApplicationMailer を継承します。ApplicationMailer が従来の ActionMailer::Base を継承しています。
【追記ここまで】

— 記事初回公開時の環境 —
Rails 4.0.1

スポンサーリンク

ActionMailer を利用する設定

まずは、ActionMailer を利用する設定を行います。以下は、Gmail の smtp サーバーを利用してメールを送信する例です。

config/environments/development.rb

上記のように設定します。使用するメールアドレスとパスワードは、各々使用する Gmail アカウントのものに変更。

Mailer クラスを生成

UserMailer クラスと registration_confirmation アクションを作成します。

mailers 以下が controller に相当し、メール用テンプレートは普通の html ビューと同じ app/views 以下に生成されています。

UserMailer クラスを編集(Rails 5)

Rails 5 では、独自の Mailer クラスは ApplicationMailer(app/mailers/application_mailer.rb)を継承して作成します。この ApplicationMailer が従来の ActionMailer::Base を継承しています。なので、default from など共通の項目は ApplicationMailer クラスに実装すると便利です。

app/mailers/user_mailer.rb

UserMailer クラスを編集(Rails 4)

app/mailers/user_mailer.rb

mail to(宛先)のメールアドレスを、とりあえず実験用のメアドに変更します。

メール用ビューを編集

UserMailer クラスの registration_confirmation アクションに対応する、メール用ビューを編集します。

app/views/user_mailer/registration_confirmation.text.erb

とりあえず、デフォルトのままで良いですかね。

コマンドラインで pry からメール送信の実験

あれ?エラー。ググったところ、あれです Gmail の2段階認証でひっかかったようです。2段階認証を設定している場合、サードパーティ製アプリから Gmail アカウントにアクセス時は、アプリケーション固有パスワードを発行して設定してやる必要があります。

アプリケーション固有のパスワードを使用してログインする – Google アカウント ヘルプ

ということで、冒頭の設定 config.action_mailer.smtp_settings[:password] に、Gmail アカウントのアプリケーション固有パスワードを設定した後 pry を再起動。

おっしゃー来たー!今度はメールが無事に届きました。Rails 何でも簡単に実装できるので、本当にすごいですね。後は実践用に Mailer のアクションやテンプレートを編集したり、I18n 対応などを行えば良い。

スポンサーリンク
パーフェクト Ruby on Rails は、最近読んだ Rails 本の中では一番役に立った本です。Chef や Capistrano など Rails と共によく使用される技術にも触れてあります。Ruby on Rails 4 アプリケーションプログラミングは、入門的な内容で Rails の機能全体を網羅されています。
スポンサーリンク
 
Twitterを使っていますのでフォローお願いたします!ブログの更新情報もつぶやいてます^^
(英語学習用)

Leave Your Message!