Railsにはメールを送信してくれるAction Mailerという機能が標準で組み込まれています。
この機能を使えばアプリケーションからメールを簡単に送信できます。
🎳 環境設定
Development環境で、メール送信に関するエラーをログに出力するようにします。
# config/environments/development.rb |
TestApp::Application.configure
内にメール送信用の設定をしてください。
# config/environments/development.rb |
🤔 Mailerファイルの生成
次のコマンドでMailerに関するファイルをまとめて生成できます。
rails g mailer message hello |
🐝 Mailerクラスの編集
次にMailerでメールを送信してみます。まずはメインのメソッドを作成します。
# app/mailers/message.rb |
メール用のViewを編集します。html形式だけでなく、text形式も利用可能です。
-# app/views/message/hello.html.haml |
コマンドラインからメールを送信してみます。
# Rails console に入る |
これでメールが、Messageクラスの『to@example.org』に送信されていれば、メール送信成功です。
🍮 MailerのRSpec
以下は、Action MailerのRSpecのサンプルです。
require rails_helper |
type: :mailer
を指定することでRSpec-railsのmailer用のメソッドを使うことができます。
🍄 補足:Action MailerのView内でHelperメソッドを使う場合
Action MailerのView内でhelperメソッドを使いたい場合は、add_template_helper(ApplicationHelper)
を追加すればつかえるようになるそうです。
# app/mailers/message.rb |
🍣 補足: Action Mailerのコールバック
Action Mailerにはbefore_action
、after_action
およびaround_action
というコールバック処理があります。
before_action
を使うことで、デフォルト値のセットやヘッダを挿入できますafter_action
はMailerのアクション内のインスタンス変数を利用した設定を行うことができます
# app/mailers/user_mailer.rb |
🐠 参考リンク
😆 プログラミングのスキルアップをサポートします!
プログラミングを習得したり、レベルアップしたい、デザイナさん、マーケッターさん、ディレクタさん、ライターさんを募集しています。 Ruby on Railsや React/Vue.js などフロントエンドなどご要望に応じてサポートします。 また、技術顧問的にコードレビューをしたり、開発で困ったことなどの質問に答える事もできます。 代わりに、個人で開発中の月間20万PVのサービスのグロースを手伝ってもらえると嬉しいです!
