2

ActionMailerから派生したRailsメールを、環境に基づいて別の受信者に送信するように構成できるかどうか疑問に思っています。たとえば、開発では、個人の電子メールにメールを送信して、会社の電子メールアカウントが「テスト」電子メールで詰まらないようにします。ただし、本番環境では実際のアドレスを使用する必要があります。

どうすればこれを達成できますか?

4

3 に答える 3

7

mail_safeプラグインは少しやり過ぎかもしれません。単純な初期化子で十分です

Rails 2.x

if Rails.env == 'development'
  class ActionMailer::Base
    def create_mail_with_overriding_recipients
      mail = create_mail_without_overriding_recipients
      mail.to = "mail@example.com"
      mail
    end
    alias_method_chain :create_mail, :overriding_recipients
  end
end

Rails 3.x

if Rails.env == 'development'

  class OverrideMailReciptient
    def self.delivering_email(mail)
      mail.to = "mail@example.com"
    end
  end

  ActionMailer::Base.register_interceptor(OverrideMailReciptient)
end
于 2010-10-29T13:38:05.220 に答える
6

デフォルトでは、開発環境は実際に電子メールを送信するように設定されていません(ログに記録するだけです)。

代替アカウントの設定は、さまざまな方法で行うことができます。あなたはそのようにあなたのメーラーでいくつかのロジックを使うことができます...

recipients (Rails.env.production? ? "email@company.com" : "test@non-company.org")

または、次のように環境ファイルで受信者を定数として定義できます。

/config/environment/production.rb

EMAIL_RECIPIENT = "email@company.com"

/config/environment/development.rb

EMAIL_RECIPIENT = "test@non-company.org"

次に、メーラーで定数を使用します。例:

recipients EMAIL_RECIPIENT
于 2009-10-06T16:34:48.680 に答える
0

また、これを行うプラグインがいくつかあります。私が見た3つの中で私が見つけた最高のものはmail_safeでした。

于 2010-05-07T21:48:05.080 に答える