template from database

なぜaction mailerは instance methodを class methodの用にコールできる?

action_mailer/base.rbのline 437部分にこれがあるから

class << self
...
  def method_missing(method, *args) #:nodoc:
    return super unless respond_to?(method)
    new(method, *args).message
  end
...
end

だとえば このようなメーラーを

class YourMailer < ActionMailer::Base
  def welcome(recipient, some_txt)    
    attachments['free_book.pdf'] = File.read('path/to/file.pdf')
    mail(to: recipient, subject: "New account information")
  end
end

このようにコール

class MailTemplatesController < ApplicationController
...
  def your_method_do_send_mail
    YourMailer.welcome(recipient).deliver
  end
..    
end

でもそのような class methodはないので method_missingを通るようになる、そこで ActionMailer::Baseがnewされる

mailcatcher

# /config/environments/development.rb
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = { :address => "localhost", :port => 1025 }

gmail軽油のメール送信

http://qiita.com/dalaito0514/items/0907ee3312ed9d79c9e8

# /config/environments/development.rb
config.action_mailer.delivery_method = :smtp
config.action_mailer.raise_delivery_errors = true
config.action_mailer.smtp_settings = {
  :enable_starttls_auto => true,
  :address => 'smtp.gmail.com',
  :port => '587',
  :domain => 'smtp.gmail.com',
  :authentication => 'plain',
  :user_name => 'ユーザー名@gmail.com',
  :password => 'gmailパスワード'
}

results matching ""

    No results matching ""