今週の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)