ドキュメントを読み込むのは大事、ということでRailsガイドを頭から読んでいく取り組みをしています。 各章ごとに、(Railsガイドにちゃんと書いてあるのに)知らなかった機能を雑にまとめていきます。
今回は、Action Mailer の基礎の章です。
with
リンクはこちら
with
を使うことでメーラーにパラメータを渡せます。送ったパラメータはメーラー側でparams
で受け取れます。
普段使うときはMailerアクションの引数に渡していたので使うことがなく、知りませんでした。
class BookMailer < ApplicationMailer def sample @book = params(:book) mail(to: 'sample@example.com', subject: 'sample件名') end end BookMailer.with(book: Book.first).sample #=> メールが送信される
attachments.inlineでメールに画像等を埋め込む
リンクはこちら
attachments.inline
を使うことでメール内に画像を簡単に埋め込むことができます。
メールをリッチにしたいときに使えそうです。
# メールアクション内で attachments.inline['image.png'] = File.read('image.png')
# メールテンプレート内で <%= image_tag attachments['image.png'].url %>
アプリケーションのホスト情報とメーラー
リンクはこちら
したがって、
*_path
ヘルパーは、この動作の性質上メール内では一切利用できない
という理屈です。
_path
が使えないというのはコーディングする上で知ってはいたものの、理屈まできちんと理解できていなかったので知れてよかったです。
delivery_method_options
リンクはこちら
メールの送信に使用するSMTPサーバの設定をdelivery_method_optionsでカスタマイズできます。
ActionMailerのコールバック
リンクはこちら
_deliver
や_action
が使えます。
メーラー.アクション.deliverメソッド
の場合、before_action
→ after_action
→ before_deliver
→ after_deliver
の順で実行されました。
class BookMailer < ApplicationMailer before_action -> { puts 'before_action called!' } before_deliver -> { puts 'before_deliver called!' } after_action -> { puts 'after_action called!' } after_deliver -> { puts 'after_deliver called!' } def sample ... end end BookMailer.sample.deliver_now! # before_action called! # Rendered...(アクションの処理) # after_action called! # before_deliver called! # after_deliver called!