Tag: Rails/メール送信

目次

関連ページ

参考情報

概要

  • RailsにはデフォルトでActionMailerという仕組みが組み込まれている。
  • 他のGemsを追加する必要はなし。

基本的な使用方法

設定ファイルの変更

  • development.rb / production.rbでsmtpサーバーに関する設定を行う。
  • 開発環境では通常postfixなどローカルのsmtpサーバーが動いていないので、smtp_settingsでいろいろ設定してやらないといけない。

外部のsmtpサーバーを使って認証してから送信する例

  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.default_url_options = { :host => "localhost", :port => 3000 }
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    :address => "my.smtp.com,
    :port => 587,
    :user_name => "tanaka@my.smtp.com",
    :password => "smptpass",
    :authentication => 'plain',
    :enable_starttls_auto => false,
  }

ローカルでsmtpサーバーが動いている場合

  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.default_url_options = { :host => "localhost", :port => 3000 }
  config.action_mailer.delivery_method = :smtp

ファイル生成

  • railsコマンドでひな形を生成できる。app/mailers/user_mailer.rbとapp/views/user_mailerという空ディレクトリが作成される。
    $  bundle exec rails generate mailer UserMailer
          create  app/mailers/user_mailer.rb
          create  app/mailers/application_mailer.rb
          invoke  erb
          create    app/views/user_mailer
          create    app/views/layouts/mailer.text.erb
          create    app/views/layouts/mailer.html.erb
          invoke  test_unit
          create    test/mailers/user_mailer_test.rb
          create    test/mailers/previews/user_mailer_preview.rb
    

user_mailer.rbを編集する

  • app/mailers/user_mailer.rbを編集する。
  • controller的な役目で、インスタンス変数に設定するとビュー側から参照できるのも同じ。
    class UserMailer < ActionMailer::Base
      default from: "from@example.com"
    
      def hello
        @greeting = "Hi"
        mail to: "foo@bar.jp"
      end
    end
    

hello.text.erbの作成

  • app/views/user_mailer/hello.text.erbを作成する。
  • view的な役目。hello.text.erbの場合テキスト形式のメールとなる。
    テストメッセージです。
    <%= @greeting %>
    

送信する

  • どこかのコントローラーのアクションから以下のように呼び出す。
    UserMailer.hello.deliver

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-01-29 (火) 16:35:49 (23d)