railsを使ってメールを送信するまでの手順です。
環境
rails 6.1.7.6
ruby 3.0.6
letter_opener_web 2.0.0
手順
-
letter_opener_web
インストール - Mailer設定
- mailerジェネレーター実行
- ビュー編集
letter_opener_web
インストール
devleopment環境だけしか使わないので環境を限定してインストールします。
Gemfile
group :development, :test do
gem 'letter_opener_web', '~> 2.0'
end
routes編集
letter_opener_web
のUIを確認できるパスを設定します。
config/routes.rb
if Rails.env.development?
mount LetterOpenerWeb::Engine, at: "/letter_opener"
end
Mailer設定
railsではActionMailerというライブラリを使ってメールを扱うようです。
devleopment.rb
を編集することで初期設定を行います。
config/environments/development.rb
config.action_mailer.raise_delivery_errors = true
config.action_mailer.perform_caching = false
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
config.action_mailer.delivery_method = :letter_opener_web
config.action_mailer.perform_deliveries = true
Mailer作成
railsジェネレーターを使ってメーラーを作成します。
rails g mailer hoge
下記のようなファイルが作成されます。
今回はメールが送信できたらそれで良いので宛先も件名も適当に決めます。
app/mailers/hoge_mailer.rb
class HogeMailer < ApplicationMailer
def hoge
mail(to: 'a@b.com', subject: 'Hoge')
end
end
View作成
hoge
というアクションを作成したのでそれに対応するviewを作成します。
app/views/hoge_mailer/hoge.html.erb
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
あとはメールを送信したいアクションで下記のメソッドを実行すれば送信できます。
HogeMailer.hoge.deliver_now