プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Ruby on Rails
  • 【Ruby on Rails】「Action Mailer」について
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Ruby on Rails】「Action Mailer」について

12.05

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

Action MailerはRailsでのメール送信機能を提供します。

メイラーを作る。

下記のようにメイラーを作成するためのジェネレータが用意されています。

1
rails g mailer メイラー名

するとapp/mailersにApplicationMailerを継承したメイラークラスが作成されています。

1
2
class メイラー名 < ApplicationMailer
end

メール送信用のメソッドを作成

引数のモデル名は、特に必須ではなくモデルの中に含まれるemailアドレス宛を設定したりメール本文に可変的な内容を埋め込んだりという用途等に使われたりします。

1
2
3
4
5
6
7
8
9
10
class メイラー名 < ApplicationMailer
  def 任意のメソッド名(モデル名)
    @モデル名 = モデル名
    mail(
      subject: 'メールタイトル',
      to: '宛先メールアドレス',
     from: '送信元メールアドレス'
    )
  end
end

fromはどのメールも同じにしたいということが普通だと思いますので下記のように指定することも多いです。

1
2
3
4
class TaskMailer < ApplicationMailer
  default from: '送信元メールアドレス'
  ‥
end

テンプレートを作成する。

テンプレートには2種類あります。どちらかの形式を指定してメール送信することも可能ですが、特に形式を指定しなかった場合はマルチパート(基本はHTMLで、環境的に無理であればtext形式)のメール送信になります。

  • テキスト形式
  • HTML形式

テキスト形式

下記の場所にファイルを新規作成して

1
app/views/メイラークラスに定義した任意のメソッド名.text.slim

HTML形式

1
app/views/メイラークラスに定義した任意のメソッド名.html.slim

メール送信処理を記述する。(コントローラーにて)

下記のメソッドを実行します。

1
メーラー名.メソッド(@モデル).deliver_now

deliver_now

即時送信するメソッド

deliver_later

Active Jobと連携して非同期にメール送信を行えるメソッドです。例えば下記のように記述すれば3分後にメールを送信することができます。

1
メーラー名.メソッド(@モデル).deliver_later(wait: 3.minutes)

動作確認

まずはmailcatcher(SMTPサーバを立てて送信されたメールをブラウザで確認できる機能)というgemが便利です。

1
gem install mailcatcher

次にdevelopment環境向けの設定を行います。config/environments/production.rbに下記設定を追記します。

1
2
3
4
  # Don't care if the mailer can't send.
  config.action_mailer.raise_delivery_errors = false
  config.action_mailer.delivery_method = :smtp ★追加
  config.action_mailer.smtp_settings = { address: '127.0.0.1', port: 1025} ★追加

Railsのサーバーを再起動し、下記コマンドを実行してmailcatcherを起動します。

1
mailcatcher

メール送信機能を実際にRailsで動かした後「http://127.0.0.1:1080」にアクセスすると下記のようにhtml形式とtext形式双方のテンプレートが想定どおり送信されているか確認できます。(仮に存在していないメールアドレス宛でも送信が可能です。)

スポンサーリンク
  • 2019 12.05
  • miyabisan2
  • コメントを書く
  • Ruby on Rails
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2019 11.27

    【Ruby on Rails】テンプレートエンジンの種類(ERB,Haml,Slim)

  2. 2019 12.01

    【Rspec】Capybaraの構文まとめ

  3. 2019 12.07

    【Ruby on Rails】「Active Storage」の基本

  4. 2019 11.26

    【Ruby on Rails】バリデーション処理、メッセージの日本語化

  5. 2019 11.30

    【Ruby on Rails】モデルの状態を自動制御する「コールバック」、「フィルタ(Filter)」について

  6. 2019 12.02

    【Ruby on Rails】エラー処理の概要

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Ruby on Rails】「検索機能」の実装(Ra…

【Ruby on Rails】「Active Stor…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー