class Mail::Configuration

which can be overwritten on a per mail object basis.
Each new mail object gets a copy of these values at initialization
configuration for all Mail objects.
The Configuration class is a Singleton used to hold the default

def delivery_method(method = nil, settings = {})

def delivery_method(method = nil, settings = {})
  return @delivery_method if @delivery_method && method.nil?
  @delivery_method = lookup_delivery_method(method).new(settings)
end

def initialize

def initialize
  @delivery_method  = nil
  @retriever_method = nil
  super
end

def lookup_delivery_method(method)

def lookup_delivery_method(method)
  case method.is_a?(String) ? method.to_sym : method
  when nil
    Mail::SMTP
  when :smtp
    Mail::SMTP
  when :sendmail
    Mail::Sendmail
  when :exim
    Mail::Exim
  when :file
    Mail::FileDelivery
  when :smtp_connection
    Mail::SMTPConnection
  when :test
    Mail::TestMailer
  when :logger
    Mail::LoggerDelivery
  else
    method
  end
end

def lookup_retriever_method(method)

def lookup_retriever_method(method)
  case method
  when nil
    Mail::POP3
  when :pop3
    Mail::POP3
  when :imap
    Mail::IMAP
  when :test
    Mail::TestRetriever
  else
    method
  end
end

def param_encode_language(value = nil)

def param_encode_language(value = nil)
  value ? @encode_language = value : @encode_language ||= 'en'
end

def retriever_method(method = nil, settings = {})

def retriever_method(method = nil, settings = {})
  return @retriever_method if @retriever_method && method.nil?
  @retriever_method = lookup_retriever_method(method).new(settings)
end