def mailer_variables
      mvars = {}

      vars_to_include = self.class.mailer_variables + self.class.content_columns.map(&:name) + self.class.reflect_on_all_associations.map(&:name)

      vars_to_include.each do |var|
        mvars[var] = self.send(var.to_sym)
      end

      # TODO: this should be less ghetto
      mvars[:from] = self.sender.email_address unless mvars[:from]
      mvars[:recipients] = self.recipients.map(&:email_address) unless mvars[:recipients].all? {|r| r.is_a? String }

      mvars
    end
def mailer_variables
      mvars = {}

      vars_to_include = self.class.mailer_variables + self.class.content_columns.map(&:name) + self.class.reflect_on_all_associations.map(&:name)

      vars_to_include.each do |var|
        mvars[var] = self.send(var.to_sym)
      end

      # TODO: this should be less ghetto
      mvars[:from] = self.sender.email_address unless mvars[:from]
      mvars[:recipients] = self.recipients.map(&:email_address) unless mvars[:recipients].all? {|r| r.is_a? String }

      mvars
    end
cattr_accessor :delegate_to_action_mailer
     def self.delegate_to_action_mailer(variable_name)
       self.delegate_to_action_mailer ||= []
       self.delegate_to_action_mailer << variable_name
       self.delegate_to_action_mailer.flatten!
       create_delegator
     end
     cattr_accessor :template_variables
     def self.template_variable(variable_name)
       self.template_variables ||= []
       self.template_variables << variable_name
       self.template_variables.flatten!
       attr_accessor variable_name
     end