環境に基づいてActionMailerメールの別の受信者を指定できますか?
-
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.
所属していません StackOverflow