module MtaSettings::ActionMailerExtensions

Public Instance Methods

mta_settings() click to toggle source
# File lib/mta_settings.rb, line 127
def mta_settings
  [delivery_method, send("#{delivery_method}_settings")] if delivery_method
end
mta_settings=(arg) click to toggle source
# File lib/mta_settings.rb, line 131
def mta_settings=(arg)
  self.delivery_method, settings =
    *case arg
    when nil, ""
      [nil, nil]
    when String, URI
      MtaSettings.from_url(arg)
    when Array
      arg
    when Symbol
      [arg, {}]
    when Hash
      arg = arg.dup
      [arg.delete(:adapter) || arg.delete(:transport), arg]
    when ENV
      MtaSettings.from_env(arg)
    else
      raise ArgumentError, "Unsupported MTA settings #{arg.inspect}"
    end
  return unless delivery_method && settings
  accessor = :"#{delivery_method}_settings"
  class_attribute(accessor) unless respond_to?(accessor)
  send(:"#{accessor}=", settings)
  if settings[:from]
    default :from => settings[:from]
  elsif !default.has_key?(:from) &&
      ![nil, LOCALHOST].include?(settings[:domain])
    default :from => "noreply@#{settings[:domain]}"
  elsif !default.has_key?(:from) &&
      settings[:user_name] =~ /\A\S+@\S+\.\w+\z/
    default :from => settings[:user_name]
  end
end