Rails 3にMailer
インスタンスがあると、delivery_method
を上書きする方法はありますか?ActionMailerとは別のdelivery_methodを1つのメールにのみ使用しますか?
優先度の高い転送で特定のメールをプッシュしたい場合や、優先度の高い方法を優先的に使用したい場合があります。
実行時に設定を調整して再度変更することはできますが、これは潜在的な副作用があります。
Rails 3にMailer
インスタンスがあると、delivery_method
を上書きする方法はありますか?ActionMailerとは別のdelivery_methodを1つのメールにのみ使用しますか?
優先度の高い転送で特定のメールをプッシュしたい場合や、優先度の高い方法を優先的に使用したい場合があります。
実行時に設定を調整して再度変更することはできますが、これは潜在的な副作用があります。
これは、特定のメーラーだけに影響し、ActionMailer::Base
をグローバルに変更することなく判明しました。
AnotherMailer
のすべてのインスタンスに影響します)を行うことができます
class SomeMailer < ActionMailer::Base
self.delivery_method = :high_priority
def some_email(params)
end
end
あなたはアップフロントのインスタンスを持っている場合、:
mail = AnotherMailer.whatever_email
mail.delivery_handler.delivery_method = :something_else
これらは文書化されていないようだが、仕事を。
':high_priority'をちょっと詳しく説明したり、リソースの方に向けることができますか? EMAIL_ENVアプローチを実装したばかりですが、まだプロダクションにプッシュしていません。私はもっと単純な解決法を試してみる傾向があります。 :) – rubish
上記は、独自の配信方法を書いて、ActionMailer :: Base.add_delivery_method:high_priority、YourHighPrioritySender'(単に 'deliver!')を実装したアクションメーラーに追加したものと想定しています。すぐに使うことができる配送方法を使っているなら、 ':high_priority'を':smtp'に置き換えることができます。 – d11wtq
私は要点を掲示します(それはちょっと愚かではありません。 – d11wtq
私は以前、ActionMailer経由でEメールが送信され、ArMailer経由で送信されたRails 2アプリケーションでこれを行っていました。同じ配送で配送方法を変更しない限り、配送方法に変更が生じないように配達方法を変更しない限り、悪い解決策ではありません。
class Mailer1
def my_mail1
config
end
private
def config
ActionMailer::Base.delivery_method = :smtp
end
end
class Mailer2
def my_mail2
config
end
private
def config
ActionMailer::Base.delivery_method = :sendmail
end
end
ActionMailer :: Baseのように変更すると、グローバルな影響があり、競合状態に陥る可能性があります。 – d11wtq
遅延ジョブまたは他のキューシステムを使用していますか?はいの場合は、おそらくそれらを使用してすべてのメールをエンキューします。 RAILS_ENVと同様のEMAIL_ENV(それぞれ異なるActionMailer設定を持つ)を設定し、異なるEMAIL_ENVを持つ別のワーカーを開始することができます。一部のメールがアプリケーション経由で直接配信される場合は、EMAIL_ENVのデフォルト値を適切に設定できます。 – rubish
実際、それはまさに私がやっていることです。私は実際に存在する私の問題を記述しなかった:)私は自分の ':queued'配送方法(いくつかの追加の追跡を行うResqueに)からメールを送信してからResqueからSMTP経由で送信する必要がある。 'ActionMailer :: Base'のサブクラス内から' delivery_method'(クラスメソッド)を設定することは、実際にグローバルなインパクトはなく、私が必要とするものはありません:) Resqueキューを介して他の電子メールを送信するので、その環境全体を変更したい(私は異なる従業員を別々に構成することができると知っています)。 – d11wtq
そのようなものが存在し、グローバルな影響を及ぼさないことを知っておくとよいでしょう。 – rubish