maeshimaの日記

メモ書きです

今週のrailscasts - Action Mailer in Rails 3


Railscasts - Action Mailer in Rails 3を見て。

作り方

rails g mailer hoge

これまでとは違い app/mailers 配下にひな形が作られる

使い方

mail(:to => email, :subject => "subject", :from => "hoge@hoge.com")

下記のようにすればデフォルトの値を宣言できる

default :from => email

送り方はこれまでのように、メソッド名の前にdeliver_をくっつける方式ではなくなった。下記のような感じで送信する

UserMailer.registration_confirmation(@user).deliver

添付メールをつけるにはattachementsメソッドを使う

attachments["rails.png"] = file

view

  • generate時にviewsも作られる
  • コントローラのようにインスタンス変数をviewに渡せる
  • layoutが使える
  • edit_user_urlなどのnamed_routeがviewで使える(たしか2.x系では使えなかったはず...)
  • テキストメールなら text.erb, HTMLメールなら html.erb を拡張子にする

ActinMailer::Base.default_url_options[:host] = "localhost:3000"

メール送信のコールバックを追加する

適当なクラスをlib配下に追加して下記のようなメソッドを追加

def self.delivering_email(message)
end

configなどに下記のように書くとメールの送信前に上記のメソッドを呼び出すことができる。toを差し替えたりすると開発環境で知らない人にメールが飛んだりするのを防止できて便利。

Mail.register_interceptor(class_name)