#author("2019-01-29T16:24:45+09:00","default:wikiwriter","wikiwriter")
#author("2019-01-29T16:35:49+09:00","default:wikiwriter","wikiwriter")
&tag(Rails/メール送信);
*目次 [#r8d78eb3]
#contents

*関連ページ [#h799088f]
-[[Rails]]

*参考情報 [#d35b1fa4]
-[[Action Mailer の基礎 | Rails ガイド:https://railsguides.jp/action_mailer_basics.html]]

*概要 [#n407a356]

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

*基本的な使用方法 [#ka5a7426]

**設定ファイルの変更 [#pd05fb35]
-development.rb / production.rbでsmtpサーバーに関する設定を行う。
-開発環境では通常postfixなどローカルのsmtpサーバーが動いていないので、smtp_settingsでいろいろ設定してやらないといけない。

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

#pre{{
  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サーバーが動いている場合''

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


**ファイル生成 [#xa440a80]
-railsコマンドでひな形を生成できる。app/mailers/user_mailer.rbとapp/views/user_mailerという空ディレクトリが作成される。
#pre{{
$  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を編集する [#xff410d6]
-app/mailers/user_mailer.rbを編集する。
-controller的な役目で、インスタンス変数に設定するとビュー側から参照できるのも同じ。
#pre{{
class UserMailer < ActionMailer::Base
  default from: "from@example.com"

  def hello
    @greeting = "Hi"
    mail to: "foo@bar.jp"
  end
end
}}

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


** 送信する [#l68cbbdd]
-どこかのコントローラーのアクションから以下のように呼び出す。
 UserMailer.hello. deliver
 UserMailer.hello.deliver

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS