railsの関数をコンソールのrubyスクリプトから呼び出して確認メールを送る
明日開催するシンポジウムの申し込み者に,まとめて「明日開催」の案内メールを送ることにしました.
もともとrailsのaction_mailerを利用して,受付確認メールを送っていたので,
そのひな形をちょろっと書き換えて,次のスクリプトをlib下に置いて実行.
簡単簡単・・・とか言っていると,ミスりそうなので慎重に・・・
サーバに一度にリクエストを送らないように,3秒ごとに送信.
ENV['RAILS_ENV'] = ARGV.first || ENV['RAILS_ENV'] || 'development' require '../config/boot' require "#{RAILS_ROOT}/config/environment" require 'console_app' require 'console_with_helpers' def main registants = Registant.find_all() registants.each do |registant| puts Time.now.to_s + "\t" + registant.id.to_s + "\t" + registant.email RegisterMailer.deliver_confirm(registant) sleep(3) end end main
上記スクリプトとは別に,modelには,confirmという関数をapp/models/register_mailer.rbに作ってあり,
class RegisterMailer < Iso2022jpMailer # ActionMailer::Base def welcome (registant) @recipients = registant.email @subject = "申し込みありがとう御座いますサブジェクト" @from = "事務局のアドレス" @cc = @from body :registant=>registant end def confirm (registant) @recipients = registant.email @subject = "明日開催,確認メールサブジェクト" @from = "事務局のアドレス" @cc = @from body :registant=>registant end end
あと,送信するメールの内容はapp/views/register_mailer/confirm.rhtmlに書いて終了.
(申し込みありがとうございます用は,app/views/register_mailer/welcome.rhtml)