カテゴリ: Rails 更新日: 2025/12/21

メール送信の準備をしよう!SMTPテスト用MailhogとLetter Openerの使い方

メール送信の準備:SMTPテスト用Mailhog/Letter Openerの導入
メール送信の準備:SMTPテスト用Mailhog/Letter Openerの導入

先生と生徒の会話形式で理解しよう

生徒

「Railsでメール機能を試したいんですが、テスト環境ってどうしたらいいですか?」

先生

「良いポイントですね。開発中は本物のメールを送らず、代わりにMailhogやLetter Openerというツールを使って、画面上でメールを確認できますよ。」

生徒

「へえ〜!それなら安心ですね。どうやって使えばいいんですか?」

先生

「では、Railsでメール送信をテストするための準備を、順番に見ていきましょう。」

1. メール送信機能の開発前に知っておくべきこと

1. メール送信機能の開発前に知っておくべきこと
1. メール送信機能の開発前に知っておくべきこと

Rails(レイルズ)では、ユーザー登録やお問い合わせなどでメール送信を使うことがよくあります。ただし、開発中に本当にメールが送られてしまうとトラブルになることがあります。

そのため、開発環境ではテスト用のメールビューワーを使うのが一般的です。このとき役に立つのが、Mailhog(メールホッグ)Letter Opener(レターオープナー)です。

どちらも実際にはメールを送らず、画面上で送信結果を確認できる便利なツールです。

2. Mailhog(メールホッグ)とは?

2. Mailhog(メールホッグ)とは?
2. Mailhog(メールホッグ)とは?

Mailhogは、SMTP(エスエムティーピー)サーバーのふりをして、開発中のメール送信を受け取り、専用のWeb画面で内容を確認できるツールです。

SMTPとは、メールを送る仕組みのことです。本物のメールサーバーに送るのではなく、Mailhogがそれを代わりに受け取ってくれます。

Docker(ドッカー)を使えば、Mailhogは簡単に動かせます。

以下は、MailhogをDockerで起動する例です。


docker run -d -p 1025:1025 -p 8025:8025 mailhog/mailhog

上のコマンドを入力すると、

  • ポート1025:SMTPサーバーの受け口
  • ポート8025:メール一覧を見るWeb画面

にアクセスできるようになります。Webブラウザで http://localhost:8025 を開けば、送信されたメールが一覧で表示されます。

3. RailsでMailhogを使う設定

3. RailsでMailhogを使う設定
3. RailsでMailhogを使う設定

Mailhogを使うには、Railsの開発環境ファイル(config/environments/development.rb)に以下のように書きます。


config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  address: 'localhost',
  port: 1025
}

これで、RailsがMailhogに向けてメールを送るようになります。

4. Letter Opener(レターオープナー)とは?

4. Letter Opener(レターオープナー)とは?
4. Letter Opener(レターオープナー)とは?

Letter Openerは、Railsのメール送信処理を使いながら、メールを本当に送る代わりにWebブラウザで表示してくれる便利なGem(ジェム)です。

つまり、送信ボタンを押すと、自動的にブラウザの別タブが開いて、メールの中身が確認できます。

インストールはとても簡単です。Gemfileに次のように追加します。


group :development do
  gem 'letter_opener'
end

追加したら、次のコマンドで反映させましょう。


bundle install

5. RailsでLetter Openerを使う設定

5. RailsでLetter Openerを使う設定
5. RailsでLetter Openerを使う設定

次に、RailsでLetter Openerを使う設定をします。開発環境ファイルに以下のように追記します。


config.action_mailer.delivery_method = :letter_opener
config.action_mailer.perform_deliveries = true

これだけで、Railsでメールを送信したときに自動でブラウザが開き、送ったメールが表示されるようになります。

6. MailhogとLetter Openerはどう使い分ける?

6. MailhogとLetter Openerはどう使い分ける?
6. MailhogとLetter Openerはどう使い分ける?

Mailhogは、SMTPサーバーを使う前提で、実際にメールを送る形式で動作します。将来的に本物のメール配信サービスを使いたい人や、SMTP設定のテストをしたい人におすすめです。

一方、Letter Openerは設定が簡単で、Railsだけで完結するので、とにかく早くメール表示を確認したい初心者におすすめです。

どちらもメール送信の挙動を安全に確認できるツールなので、自分の目的に合わせて選びましょう。

7. メール送信に必要な事前知識と注意点

7. メール送信に必要な事前知識と注意点
7. メール送信に必要な事前知識と注意点

メール送信のテストには、次のような用語もよく出てきます。ここで簡単に紹介しておきます。

  • SMTP(エスエムティーピー):メールを送るための通信ルール
  • Gem(ジェム):Railsに機能を追加するためのパーツ
  • ポート番号:通信を受け取る入り口の番号

パソコン初心者の方でも、「本物のメールを送る代わりに、画面で確認する」とイメージしておけば問題ありません。

まとめ

まとめ
まとめ

Railsの開発環境で安全にメール送信を確認するためには、実際にメールを送らずに画面上で内容を検証できる仕組みが欠かせません。とくにMailhogやLetter Openerのような便利な仕組みは、初心者が安心してメール送信の流れを理解し、SMTPの基礎やRails特有の設定方法を身につけるうえで大きな助けとなります。開発中のメール送信動作は、SMTP通信やポート番号の役割を理解しながら操作していくことで、より実践的な技術習得につながります。また、MailhogではDockerを用いた簡易的なサーバー起動ができ、RailsからSMTP設定で接続することで、実際の環境に近い形でメール挙動を確かめられます。一方、Letter OpenerはGemとしてRailsに追加するだけで、メール内容がブラウザ表示されるため、環境構築の負担が少なく、メールテンプレートの確認やデザイン調整が素早く行える点が魅力です。

どちらの方法も開発時の安全性を高め、誤送信を防ぎつつ、確実にメール送信処理をテストする重要な手段です。特にRailsでは、環境ごとに設定ファイルがわかれているため、development環境専用の設定として、config.action_mailer に適切なdelivery_methodを指定することが非常に大切です。こうした構成を理解しておくことで、本番環境でメール送信を行う際にもスムーズな移行ができ、SMTPサーバーや外部サービスとの連携もより確実になります。

さらに、実際のメール送信では、エンコード、差出人名、メール本文の整形などの細かな仕様も重要となるため、開発段階でMailhogやLetter Openerを活用し、細部までしっかり確認する習慣をつけておくことが品質向上につながります。以下のように、設定ファイルのサンプルを用意しておくと、Railsプロジェクト内で素早く確認や修正ができ、開発作業全体の効率も向上します。

サンプル設定コード


# Mailhogを使う設定例
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  address: 'localhost',
  port: 1025
}

# Letter Openerを使う設定例
config.action_mailer.delivery_method = :letter_opener
config.action_mailer.perform_deliveries = true

メール送信を設計する際には、ただ送れるようにするだけでなく、視覚的に内容を確認しながら微調整を繰り返すプロセスが欠かせません。MailhogならSMTPテスト、Letter Openerならブラウザ表示と、どちらも目的に応じて柔軟に選択できます。Rails初心者にとって、これらのツールは学習過程でつまずきがちな「メール送信のしくみ」を直感的に理解する助けとなるため、ぜひ積極的に活用していくことをおすすめします。とくにお問い合わせフォームやユーザー登録など、アプリ制作で頻繁に登場するメール機能は、正しく動作させるための実践的な知識が多く含まれているため、今回の内容を繰り返し確認しながら自分のプロジェクトにも応用してみましょう。

先生と生徒の振り返り会話

生徒「MailhogとLetter Openerって、どちらもメールを画面で確認できるんですよね?」

先生「そのとおりです。ただ、MailhogはSMTPサーバーを使う形でより実際の環境に近く、Letter OpenerはRailsの中だけで完結するので設定が簡単です。」

生徒「なるほど。SMTPの動きも確認したいときはMailhog、手軽にチェックしたいときはLetter Openerってことですね!」

先生「その理解で完璧です。開発環境で安全にメール送信をテストするために、目的に合わせて使い分けることが大切ですよ。」

生徒「Railsの設定ファイルも少しずつ読めるようになってきました。もっと練習してみます!」

先生「良い姿勢ですね。実際に手を動かすほど理解は深まりますから、ぜひ続けてみてください。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Railsでメール送信機能を開発するとき、本物のメールを送る必要はありますか?

いいえ、Railsの開発中は本物のメールを送る必要はありません。MailhogやLetter Openerといったツールを使うことで、実際にメールを送信せずにブラウザ上でメール内容を確認できます。
関連記事:
カテゴリの一覧へ
新着記事
New1
データベース
SQLの処理が遅くなる原因とは?初心者向けにデータベースパフォーマンス最適化を完全解説
New2
Ruby
RubyのネストHash操作を徹底解説!digとtransformメソッドで複雑なデータも楽々
New3
Rails
Railsインデックス設計の極意!爆速サイトを作るためのスキーマ設計ガイド
New4
データベース
SQLのCOMMITとROLLBACKとは?トランザクション操作を初心者向けに完全解説
人気記事
No.1
Java&Spring記事人気No1
Ruby
PATHと環境変数の正しい設定!Windows・Mac・Linux別チェックリスト付き
No.2
Java&Spring記事人気No2
Rails
Railsで日本語と時刻の設定をしよう!初心者でも安心のlocale/zone初期設定チートシート
No.3
Java&Spring記事人気No3
Ruby
Rubyのハッシュを徹底比較!シンボルキーと文字列キーの違いと使い分け
No.4
Java&Spring記事人気No4
Rails
Railsマイグレーションの型選びを完全ガイド!初心者が迷わないカラム設計
No.5
Java&Spring記事人気No5
Ruby
WindowsでRubyをインストールする方法!RubyInstallerとMSYS2を使った完全ガイド
No.6
Java&Spring記事人気No6
Rails
RailsモデルとActive Record基礎|ID戦略を完全理解!AUTO INCREMENT・UUID・ULIDの比較と導入手順
No.7
Java&Spring記事人気No7
データベース
ACID特性とは?データベーストランザクションの信頼性を初心者向けに徹底解説
No.8
Java&Spring記事人気No8
Rails
RailsモデルとActive Record基礎|クエリログの読み方を理解してEXPLAIN・joins・includesの違いを学ぼう