仕事でAction Mailerのメール文言を修正するタスクがありました。
いちいちローカル環境でメール送信のためのオペレーションをせず、rails consoleとletter_opener_webで簡単に動作確認できたので、備忘録としてまとめます。
バージョン
- Rails 6.1.7.7
- letter_opener_web 2.0.0
記事の信頼性
- ぼくは独学で未経験から従業員300名以上の自社開発企業へ転職しました。
- 実務ではVue.jsとRailsを毎日書いています。
- 初心者や駆け出しエンジニアがつまづくポイントも身をもってよく理解しています。
目次
問題
Action Mailerで実装されているメールの動作確認のため、ローカル環境で実際にメールを送る必要がありました。
しかし、そのメールをローカルで再現するためには、複雑なオペレーションをしなくてはならず、毎回それを行うのが手間に感じていました。
なお今回は、以下のような銀行送金に関するメールを送りたかったです。
class UserMailer < ApplicationMailer
  default from: "hogehoge@example.com"
  def bank_transfer_created(transfer_id)
    # 銀行送金を実施したことを示すメールが送信される
  end
end解決策
結論として、rails consoleでメール送信のメソッドを実行すればOKです。
$ rails console
[1] pry(main)> transfer_id = BankTransfer.last.id
[2] pry(main)> UserMailer.bank_transfer_created(transfer_id).deliver_now
これで送信したメールがletter_opener_webで確認できるはずです。
deliver_nowメソッドは、Action Mailerのメソッドの1つで、メールを即時送信するために利用されます。
deliver_nowがないと、rails console上でメールオブジェクトが返されるだけで、メールは送信されないので注意しましょう。
おわりに
rails consoleで実行すれば簡単に動作確認できるというのは、Action Mailerに限らない話ですね。
ついついコンソールの存在を忘れがちなので、注意します。
 
			 
			 
			![[改訂新版]プロになるためのWeb技術入門の画像イメージ](https://kazuya-engineer.com/wp-content/uploads/2024/12/[改訂新版]プロになるためのWeb技術入門.001-300x169.jpeg) 
			 
			 
			 
			 
			
コメント