Подтвердить что ты не робот

ActionMailer: По умолчанию От: адрес?

Для этого ничего не получается. Ничего не найдено в API. Я ожидал какой-то метод класса или параметр конфигурации, чтобы установить его...

Итак, вместо вызова

from "[email protected]"

для каждого метода, его можно было бы вызвать автоматически.

4b9b3361

Ответ 1

Рельсы 3

конфигурации/среда/development.rb:

ActionMailer::Base.default :from => '[email protected]'

конфигурации/среда/production.rb:

ActionMailer::Base.default :from => '[email protected]'

Вы также можете установить это для каждого отправителя:

class MyMailer < ActionMailer::Base
  default :from => '[email protected]'
end

Рельсы 2

Это не поддерживается по умолчанию. Но вы можете достичь этой функциональности, используя плагин action_mailer_callbacks. По существу этот плагин позволяет добавлять фильтры before и after для метода deliver.

class FooMailer < ActionMailer::Base
  before_deliver do |mail|
    mail.from = "[email protected]"
  end

end

Справка:

1) Статья, обсуждающая плагин.

ИЛИ

Вы можете обезглавить патч from методом ActionMailer::Base.

Добавьте код ниже в config\initializers\mail.rb

class ActionMailer::Base
  class_inheritable_hash :default
  def from_with_default(input=nil)
    return from_without_default(input) || default[:from] if input.nil?
    from_without_default(input)
  end
  alias_method_chain :from, :default
end

Теперь вы можете настроить свое значение по умолчанию следующим образом:

конфигурации/среда/development.rb:

ActionMailer::Base.default = {:from => '[email protected]'}

конфигурации/среда/production.rb:

ActionMailer::Base.default = {:from => '[email protected]'}

Вы также можете установить это для каждого отправителя:

class MyMailer < ActionMailer::Base
  self.default = {:from => '[email protected]'}
end

Ответ 2

В Rails 4 вы можете установить это в своей среде (ах):

config.action_mailer.default_options = {
  :from => "[email protected]"
}

Ответ 3

В Rails 3:

конфигурации/среда/development.rb:

ActionMailer::Base.default :from => '[email protected]'

конфигурации/среда/production.rb:

ActionMailer::Base.default :from => '[email protected]'

Ответ 4

Я пошел с методом обезглавливания, который предложил Кандада Боггу. Однако в Rails 2.3.8 это не работает. вы не можете переопределить значение по умолчанию. Это работает, однако:

def from_with_default(input=nil)
  return instance_variable_set("@from", input) unless input.nil?
  from_without_default || FROM_EMAIL
end
alias_method_chain :from, :default