アクションメーラー:デフォルトの開始:住所?
-
20-09-2019 - |
質問
これについてGoogleで検索しても無駄でした。API にも何も見つかりませんでした。何らかのクラスメソッドまたは設定オプションがそれを設定することを期待していました...
したがって、電話するのではなく、
from "my@email.com"
すべてのメソッドについて、自動的に呼び出すことができます。
解決
レール 3
config/environments/development.rb:
ActionMailer::Base.default :from => 'default@development-server.com'
config/environments/production.rb:
ActionMailer::Base.default :from => 'default@production-server.com'
これをメーラーごとに設定することもできます。
class MyMailer < ActionMailer::Base
default :from => 'default@myapp.com'
end
レール2
これはデフォルトではサポートされていません。ただし、この機能は、 action_mailer_callbacks プラグイン。基本的にこのプラグインを使用すると、次のことを追加できます before
そして after
のフィルター deliver
方法。
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/environments/development.rb:
ActionMailer::Base.default = {:from => 'default@development-server.com'}
config/environments/production.rb:
ActionMailer::Base.default = {:from => 'default@production-server.com'}
これをメーラーごとに設定することもできます。
class MyMailer < ActionMailer::Base
self.default = {:from => 'default@myapp.com'}
end
他のヒント
レール4で使用している環境(複数可)でこれを設定することができます:
config.action_mailer.default_options = {
:from => "foo@bar.com"
}
レール3:
設定/環境/ development.rbます:
ActionMailer::Base.default :from => 'default@development-server.com'
設定/環境/ production.rbます:
ActionMailer::Base.default :from => 'default@production-server.com'
私はKandadaBogguが提案猿パッチングの方法で行ってきました。しかし、それは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