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

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

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

工作HardwareHub ロゴ画像 (Laptop端末利用時)
工作HardwareHub ロゴ画像 (Mobile端末利用時)

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

モーダルを閉じる

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

モーダルを閉じる

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

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

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

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

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

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

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

目次

    アカウント プロフィール画像 (サイドバー)

    アラサーエンジニア

    0
    ステッカーを贈るとは?

    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
    
    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