ActionMailerから派生したRailsメールを、環境に基づいて別の受信者に送信するように構成できるかどうか疑問に思っています。たとえば、開発では、個人の電子メールにメールを送信して、会社の電子メールアカウントが「テスト」電子メールで詰まらないようにします。ただし、本番環境では実際のアドレスを使用する必要があります。
どうすればこれを達成できますか?
ActionMailerから派生したRailsメールを、環境に基づいて別の受信者に送信するように構成できるかどうか疑問に思っています。たとえば、開発では、個人の電子メールにメールを送信して、会社の電子メールアカウントが「テスト」電子メールで詰まらないようにします。ただし、本番環境では実際のアドレスを使用する必要があります。
どうすればこれを達成できますか?
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
デフォルトでは、開発環境は実際に電子メールを送信するように設定されていません(ログに記録するだけです)。
代替アカウントの設定は、さまざまな方法で行うことができます。あなたはそのようにあなたのメーラーでいくつかのロジックを使うことができます...
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
また、これを行うプラグインがいくつかあります。私が見た3つの中で私が見つけた最高のものはmail_safeでした。