モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

メール送信の方法 (Rails4/ActionMailer)

モーダルを閉じる

ステッカーを選択してください

お支払い手続きへ
モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2014/10/14
最終更新最終更新
2017/12/28
記事区分記事区分
一般公開

Railsに標準で搭載されているActionMailerという仕組みを利用してメール送信を行う方法を記載します。

必要なファイルの自動生成

以下のコマンドで必要なファイルを自動生成します。

$ rails generate mailer MyMailer method_name

実行結果例

create  app/mailers/my_mailer.rb
invoke  erb
create    app/views/my_mailer
create    app/views/my_mailer/method_name.text.erb
invoke  test_unit
create    test/mailers/my_mailer_test.rb

設定ファイルの更新

環境毎に用意されている設定ファイルに、ActionMailerの設定項目を追記します。Developmentの場合の例を以下に記載します。

config/environments/development.rb

MyApp::Application.configure do
  ...

  config.action_mailer.delivery_method = :smtp  # SMTPを利用
  config.action_mailer.raise_delivery_errors = true  # 送信できない場合に例外を発生させる
  config.action_mailer.default_url_options = { host: 'www.example.com' }  # 後述のURL生成時に使用する自サイトのホスト
  config.action_mailer.smtp_settings = {
    address: 'smtp.example.com',  # SMTPサーバの設定
    port: 587,
    domain: 'example.com',  # ドメイン部分
    user_name: 'USERNAME',
    password: 'PASSWORD'
  }
end

ヘッダ情報などの設定

件名を含め、ヘッダ情報は以下のように指定します。

app/mailers/my_mailer.rb

class MyMailer < ActionMailer::Base
  default from: "from@example.com",  # 共通のヘッダ情報はここに記述
          reply_to: "reply_to@example.com",
          charset: 'UTF-8'

  # Subject can be set in your I18n file at config/locales/en.yml
  # with the following lookup:
  #
  #   en.my_mailer.method_name.subject
  #
  def method_name(arg)
    @arg = arg
    @greeting = "Hi"

    # ↓添付ファイルを指定する場合
    attachments['sample.jpg'] = File.read(Rails.root.join('path/to/sample.jpg'))

    # ↓メソッド別のヘッダ情報はここに記述。他にbccなども指定可能
    mail (to: "to@example.org", cc: "cc@example.org", subject: '件名')
  end
end

環境によって宛先などのヘッダ情報を変更したい場合は

Rails.env.development?
Rails.env.production?

によって条件分岐を記述すればよいです。

メール本文のテンプレート

自動生成されている「app/views/my_mailer/method_name.text.erb」を編集します。一般のビューファイルと同じ記法が使用できます。例えば、"MyMailer" からの引数を利用するためには以下のようにします。

<%= @arg.value %>

また、URLを生成するには

<%= url_for(host: 'www.example.com', controller: :my_models, action: :index) %>

とします。「config/environments/development.rb」で指定した "host" を利用する場合は単に

<%= url_for(controller: :my_models, action: :index, only_path: false) %>

と記述できます。

コントローラからの実行

以上の "MyMailer" を利用してメールを送信するためには、コントローラ内で以下のように記述します。

def sendmail
  arg = MyModel.find(1)
  @mail = MyMailer.method_name(arg).deliver
  render text: 'メール送信完了'
end
Likeボタン(off)0
詳細設定を開く/閉じる
アカウント プロフィール画像

アラサーエンジニア

記事の執筆者にステッカーを贈る

有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

>>さらに詳しくステッカーを贈る
ステッカーを贈る コンセプト画像

Feedbacks

Feedbacks コンセプト画像

    ログインするとコメントを投稿できます。

    ログインする

    関連記事

    • レイアウトおよび部分テンプレートに関するまとめ (Rails4)
      レイアウトおよび部分テンプレートはどちらもテンプレート (*.html.erb) に共通の要素をまとめておき、任意のテンプレートから利用できるようにしておくための仕組みです。フッターやヘッダーといった大枠はレイアウト、小さなパーツは部分テンプレートというイメージで使い分けましょう。 レイアウトの使用方法 クラス毎に指定する方法と、アクション毎に指定する方法があります。 app/views/layo...
      taro三世taro三世10/21/2016に更新
      いいねアイコン画像0
    • Ruby コードスニペット (正規表現)
      sample.rb str = "001: This is a string." var1,var2 = 2,3 # 'EOS'とすると#{}による変数展開がなされない (%03dは展開される) doc = (<<"EOS" % var1) # 括弧は省略可。要は<<"EOS"の次の行からEOSまで。(参: <<-"EOS"とすると前に空白...
      だいふくうさぎだいふくうさぎ5/13/2018に更新
      いいねアイコン画像0
    • OAuthを用いずにTwitterに自動投稿する (回数制限あり, Selenium with Ruby)
      Seleniumを用いて、OAuthを用いずにTwitterに自動投稿するRubyスクリプトを記述してみます。連続で複数回実行すると、ボット判定としてキャプチャ認証が発生します。その認証までは通過できませんので悪しからず。また、Twitterの仕様変更次第ではDOMの構造が変化するため、下記サンプルは機能しなくなる恐れが有ります。 twitter_post.rb #!/usr/bin/ruby r...
    • Ruby における日本語のエンコーディング
      日本語を含めて多言語対応する際には、Asciiコード以外の文字コードセットが必要になります。日本語が主となる場合、よく使われる文字セットにはUnicode, Shift_JIS, EUC-JPがあります。このうち Unicode だけは特殊であり、世界中のあらゆる文字を収録しようとしていることから 1 文字を表現するために必要なバイト数が大きくなってしまっています。そのため Unicode のうち...
      だいふくうさぎだいふくうさぎ4/21/2017に更新
      いいねアイコン画像0
    • Rails3ビューテンプレートの基本的な使用方法 (Ruby)
      Railsでは、ERB (eRuby (テキストファイルにRubyスクリプトを埋込む書式の仕様) をRubyで実装したもの) を用いてHTML内にRubyスクリプトを埋込むことができます。 <% %> で囲むと出力されません (if-elseなど制御構文を記述します) <%= %> で囲むとエスケープ出力されます <%== %> で囲むとエスケープされずに...
      ほんわかパンダほんわかパンダ10/21/2016に更新
      いいねアイコン画像0