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

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

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

from "my@email.com"

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

17
задан Alexandre 15 March 2010 в 04:35
поделиться

2 ответа

Rails 3

config / environment / development.rb:

ActionMailer::Base.default :from => 'default@development-server.com'

config / environment / production.rb:

ActionMailer::Base.default :from => 'default@production-server.com'

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

class MyMailer < ActionMailer::Base
  default :from => 'default@myapp.com'
end

Rails 2

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

class FooMailer < ActionMailer::Base
  before_deliver do |mail|
    mail.from = "abc@xyz.com"
  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

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

config / environment / development.rb:

ActionMailer::Base.default = {:from => 'default@development-server.com'}

config / environment / production.rb:

ActionMailer::Base.default = {:from => 'default@production-server.com'}

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

class MyMailer < ActionMailer::Base
  self.default = {:from => 'default@myapp.com'}
end
53
ответ дан 30 November 2019 в 09:59
поделиться

В Rails 3:

config / окружения / development.rb:

ActionMailer::Base.default :from => 'default@development-server.com'

config / окружения / production.rb:

ActionMailer::Base.default :from => 'default@production-server.com'
11
ответ дан 30 November 2019 в 09:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: