ActionMailer in standalone apps
require 'rubygems'
require 'pp'
require_gem 'actionmailer'
ActionMailer::Base.template_root = 'templates'
ActionMailer::Base.delivery_method = :test
class TestMailer < ActionMailer::Base
def test
@recipients = 're@domain.com'
@subject = 'Hello World'
@from = 'sender@domain.com'
end
end
if $0 == FILE
TestMailer.deliver_test
ActionMailer::Base.deliveries.each do |mail|
puts "#{'='*60}"
puts "Subject: #{mail.subject}"
puts "From: #{mail.from}"
puts "To: #{mail.to}"
puts "#{'-'*60}"
puts "#{mail.body}"
end
end
As in Rails you simply create an ActionMailer subclass and do the deliver_action thing with it. The only thing that is slightly different here, is that you have to specify a template_root directory. The rest of the configuration should be the same as for its use in a Rails webapp (for details please read the manual) In this case I use the 'templates' folder in the same directory as the script (actually in the pwd but anyway
).
So for this example you would have to have following folder structure
./templates ./templates/test_mailer ./templates/test_mailer/test.rhtml ./test.rb
Running this script should give you the expected mail
Note: I haven't tested it with anything but the :test delivery_method, so perhaps there are some hidden problems
