Могу ли я указать другого получателя электронной почты ActionMailer в зависимости от среды? - PullRequest
2 голосов
/ 06 октября 2009

Мне интересно, можно ли настроить электронную почту Rails, полученную из ActionMailer, для отправки другому получателю в зависимости от среды. Например, для разработки я бы хотел, чтобы он отправлял почту на мою личную электронную почту, чтобы я не забивал почтовый аккаунт нашей компании сообщениями «Тестирование»; однако для производства я хочу использовать реальный адрес.

Как мне этого добиться?

Ответы [ 3 ]

7 голосов
/ 29 октября 2010

Плагин mail_safe может быть немного убит. Простой инициализатор сделает

Рельсы 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

Рельсы 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
6 голосов
/ 06 октября 2009

По умолчанию среда разработки не настроена на фактическую отправку электронных писем (она просто регистрирует их).

Настройка альтернативных учетных записей может быть выполнена разными способами. Вы можете использовать некоторую логику в вашем почтовике, например ...

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

Или вы можете определить получателя как константу в файлах среды следующим образом:

/ конфигурации / среда / production.rb

EMAIL_RECIPIENT = "email@company.com"

/ конфигурации / среда / development.rb

EMAIL_RECIPIENT = "test@non-company.org"

, а затем используйте константу в вашей почтовой программе. Пример:

recipients EMAIL_RECIPIENT
0 голосов
/ 08 мая 2010

Также есть несколько плагинов, которые делают это.Лучшим из трех, которые я нашел, был mail_safe .

...