カテゴリ: Rails 更新日: 2026/02/27

RailsでHTML+テキストメールを送信する方法|Action Mailerのmultipart/alternative完全入門

HTML+テキスト(multipart/alternative)メールの作り方とテスト
HTML+テキスト(multipart/alternative)メールの作り方とテスト

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

生徒

「Railsでメールを送れるって聞いたんですが、文字だけじゃなくて、きれいなHTMLメールも送れるんですか?」

先生

「できますよ。RailsのAction Mailerを使えば、HTMLとテキストの両方を一度に送ることができます。」

生徒

「HTMLとテキストの両方って、どういう意味ですか?」

先生

「メールソフトに合わせて、見やすいHTML版と、文字だけの安全なテキスト版を自動で切り替える仕組みです。順番に見ていきましょう。」

1. Action Mailerとは?Railsのメール送信機能を理解しよう

1. Action Mailerとは?Railsのメール送信機能を理解しよう
1. Action Mailerとは?Railsのメール送信機能を理解しよう

Action Mailer(アクションメイラー)とは、Railsでメールを送信するための標準機能です。Webアプリケーションから「ユーザー登録完了メール」や「パスワード再設定メール」などを送るときに使われます。

Railsでは、メールもMVCという考え方で整理されています。MVCとは、役割を分けて考える設計方法です。メールの場合も、メールの処理を書く場所と、見た目を書く場所が分かれています。

この仕組みのおかげで、初心者でもメール内容を安全に、きれいに管理できます。

2. HTMLメールとテキストメールの違いとは?

2. HTMLメールとテキストメールの違いとは?
2. HTMLメールとテキストメールの違いとは?

メールには大きく分けて2種類あります。HTMLメールとテキストメールです。

HTMLメールは、文字に色をつけたり、改行やレイアウトを整えたりできる、見た目がきれいなメールです。一方、テキストメールは文字だけで構成された、シンプルで安全性の高いメールです。

人によって使っているメールソフトが違うため、HTMLが表示できない場合もあります。そこでRailsでは、multipart/alternativeという仕組みを使い、HTML版とテキスト版を同時に送信します。

3. メイラーを作成しよう(rails generate mailer)

3. メイラーを作成しよう(rails generate mailer)
3. メイラーを作成しよう(rails generate mailer)

まずは、メール専用のクラスであるメイラーを作成します。ターミナルに次のコマンドを入力します。


rails generate mailer UserMailer

このコマンドを実行すると、メール用のフォルダやファイルが自動で作られます。Railsは「決まった形」を大切にするため、初心者でも迷いにくい構成になっています。

4. メール送信メソッドを定義する

4. メール送信メソッドを定義する
4. メール送信メソッドを定義する

次に、実際に送るメールの内容をメイラーに書きます。ここでは「登録完了メール」を例にします。


class UserMailer < ApplicationMailer
  def welcome_email(user)
    @user = user
    mail(to: user.email, subject: '登録ありがとうございます')
  end
end

mailはメールを送る命令です。宛先や件名を指定するだけで、Railsが必要な処理を自動で行ってくれます。

5. HTMLテンプレートを作成する

5. HTMLテンプレートを作成する
5. HTMLテンプレートを作成する

HTMLメールの見た目は、ビュー(テンプレート)で作ります。HTMLを書く場所は決まっていて、ファイル名もルールがあります。


<h1>ようこそ、<%= @user.name %>さん</h1>
<p>Railsアプリへのご登録ありがとうございます。</p>
<p>これからサービスをご利用いただけます。</p>

このHTMLは、普通のWebページとほぼ同じ感覚で書けます。難しい知識は不要です。

6. テキストテンプレートを作成する

6. テキストテンプレートを作成する
6. テキストテンプレートを作成する

次に、文字だけのテキストメールを作ります。HTMLと同じ内容を、シンプルな文章で書きます。


ようこそ、<%= @user.name %>さん

ご登録ありがとうございます。
サービスをご利用いただけます。

HTML版とテキスト版の両方があることで、どんな環境でもメールを正しく読めます。

7. multipart/alternativeが自動で使われる仕組み

7. multipart/alternativeが自動で使われる仕組み
7. multipart/alternativeが自動で使われる仕組み

Railsでは、HTML用とテキスト用のテンプレートを両方用意するだけで、自動的にmultipart/alternative形式になります。

難しい設定を書く必要はありません。Railsが「両方あるなら、両方送る」という判断をしてくれます。

これは初心者にとって非常に安心できるポイントです。

8. メールのテスト方法(プレビューとテストコード)

8. メールのテスト方法(プレビューとテストコード)
8. メールのテスト方法(プレビューとテストコード)

実際にメールを送る前に、内容を確認する方法があります。Railsにはメールプレビュー機能が用意されています。


UserMailer.welcome_email(user).deliver_now

また、テストコードを書くことで、メールが正しく作られているかを自動で確認できます。


mail = UserMailer.welcome_email(user)
puts mail.subject

登録ありがとうございます

このように、送信せずに中身だけを確認できるので安心です。

カテゴリの一覧へ
新着記事
New1
Ruby
“すべてはオブジェクト”を体感!初心者向けRubyのオブジェクト指向入門【irbで学ぶ】
New2
Ruby
Rubyの標準入出力を完全ガイド!puts・print・pの違いとデバッグ活用法
New3
Ruby
Gemとは?RubyGemsとBundlerを初心者向けに完全解説!依存関係管理も図解でわかりやすく理解
New4
Ruby
Rubyの文字エンコーディング入門!UTF-8・マジックコメント・外部/内部エンコーディングを完全解説
人気記事
No.1
Java&Spring記事人気No1
Ruby
Rubyのreduceとinject入門!合計計算や集計を初心者向けに分かりやすく解説
No.2
Java&Spring記事人気No2
Ruby
Rubyの文字列エンコーディング完全ガイド!Encoding・force_encoding・encodeを初心者向け解説
No.3
Java&Spring記事人気No3
Ruby
Rubyの始め方ガイド:インストールから最初のHello Worldまで(Windows/Mac/Linux)
No.4
Java&Spring記事人気No4
データベース
PostgreSQLのWHERE句を徹底解説!初心者でもわかるSQLデータ抽出の基本
No.5
Java&Spring記事人気No5
Ruby
Rubyのfind/detect/find_indexを徹底解説!目的のデータを素早く探す方法
No.6
Java&Spring記事人気No6
Ruby
Rubyで比較演算子を完全解説!==・===・<=>・eql? の使い分け
No.7
Java&Spring記事人気No7
Ruby
Rubyのselect/reject/filterの使い方を完全解説!初心者向けの条件抽出レシピ
No.8
Java&Spring記事人気No8
データベース
PostgreSQLで順位付け!ROW_NUMBER関数の使い方を初心者向けに徹底解説