環境に基づいてActionMailerメールの別の受信者を指定できますか?

StackOverflow https://stackoverflow.com/questions/1526469

  •  20-09-2019
  •  | 
  •  

質問

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

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

役に立ちましたか?

解決

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

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

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

他のヒント

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top