日本語でメール送信@ActionMailer

  • ユーザー登録の最終確認をメールでサクッと送ったりしたいので設定。
  • 環境設定にSMTPサーバーの設定をいれる。
  • ここでは下で紹介するローカルのテスト用smtpサーバーを指定

config/environment.rb

ActionMailer::Base.smtp_settings = { :address => '127.0.0.1',
                                     :port => 25,
                                     :domain => 'sakusan',}

ちなみにRails1.2.3では

ActionMailer::Base.server_settings = {}

で設定をしていて動いたが、2.0.2ではこれだと起動時に色々と怒られたので注意

  • MyMailerという一式ををActionMailerでジェネレート
$ ruby script/generate mailer MyMailer confirm


model

class MyMailer < ActionMailer::Base
  def confirm(addr,title,body)
    sent_at = Time.now
    @subject    = title
    @body       = body
    @recipients = addr
    @from       = "#{base64('postmaster@test')}"
    @sent_on    = sent_at
    @headers    = {}
  end
end
  • 実際に動かして見る

controller

  MyMailer.deliver_confirm("sakusan@example.com","テストメールタイトル","テストメール本文")

メール実験環境

メールの動作確認はsmtpサーバーが厳しかったり色々な理由で面倒なのですが、実験では以下のpmailというソフトが便利
ローカルにsmtppop3サーバーを立ててrailsから送信し、自分のメーラーでローカルのpop3サーバーにとりに行って確認できる
http://www.vector.co.jp/soft/winnt/net/se338981.html
設定は、Domeinに自分のpcドメインを入れ、ユーザー設定タブのメールボックスにユーザー追加
ここでpop3で取りに来るときのIDとパスワードを入れる。
その下にAddressとなっているが、ここは@以降はいれなくていい(ここではまった)

あとはメーラーからアカウントを作ってpop3smtp127.0.0.1とかにしてメーラーでとりあえず確認した後Rails側から送信をテストすると良いです。