lib/mail_engine/base.rb in mail_engine-0.0.1 vs lib/mail_engine/base.rb in mail_engine-0.1.0
- old
+ new
@@ -2,25 +2,46 @@
class Base
cattr_accessor :configurations, :instance_writer => false
@@configurations = HashWithIndifferentAccess.new
class << self
+ # return current runtime environment config hash.
+ # === example
+ #
+ # log_mail: true
+ # sendgrid_user: "xxx@theplant.jp"
+ # sendgrid_key: "xxx"
+ # sendgrid_category: "development"
+ # user_class_name: "User"
+ # mount_at: "/admin"
+ #
def current_config
MailEngine::Base.configurations[Rails.env]
end
- ### send mail template with given data.
- # MailEngine::Base.send_mail("gogogo", :to => 'm@theplant.jp', :values => {:users => User.last})
- def send_mail(template, *args)
+ # send mail template with given data.
+ # === example
+ #
+ # MailEngine::Base.send_marketing_mail("newsletter", :to => 'm@theplant.jp', :values => {:users => MailEngine::USER_MODEL.last})
+ #
+ def send_marketing_mail(template, *args)
options = args.extract_options!
+ options[:locale] ||= I18n.locale
+
+ # ensure the :to parameter.
raise "Should specify :to option" if options[:to].blank?
- # find if the template was stored in database.
+ # find the template from database.
template_path = File.join("mail_engine", "mail_dispatcher", template)
- raise "Can't find the template: #{template_path}" unless mail_template = MailEngine::MailTemplate.where(:path => template_path).first
+ unless mail_template = MailEngine::MailTemplate.where(:path => template_path, :locale => options[:locale], :for_marketing => true, :partial => false).first
+ raise "Can't find the template: #{template_path}"
+ end
- options[:subject] = mail_template.name
- MailEngine::MailDispatcher.send(template, options).deliver
+ options[:subject] ||= mail_template.subject
+ I18n.with_locale(mail_template.locale) do
+ MailEngine::MailDispatcher.send(template, options).deliver
+ end
end
+
end
end
end
\ No newline at end of file