как вы можете фильтровать/блокировать исходящие адреса электронной почты с помощью actionmailer rails 2.x?

для непроизводственных сред rails 2.x я хочу блокировать/фильтровать любые исходящие электронные письма, которые не адресованы людям в моей организации (например, «*@where-i-work.com»).

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

благодаря.


person Teflon Ted    schedule 10.03.2011    source источник
comment
Для этого есть жемчужина! stackoverflow.com/questions/4393213/ github.com/pboling/sanitize_email   -  person Peter Ehrlich    schedule 21.10.2012


Ответы (2)


Вы можете попробовать расширить функцию Mail::Message.deliver в файле environment.rb - что-то вроде (не проверено - просто демонстрационный код!):

class Mail::Message
    def deliver_with_recipient_filter
        self.to = self.to.to_a.delete_if {|to| !(to =~ /.*@where-i-work.com\Z/)} if RAILS_ENV != production
        self.deliver_without_recipient_filter unless self.to.blank?
    end

    alias_method_chain :deliver, :recipient_filter
end

Обратите внимание, что этот идентификатор для Rails 3 — я думаю, что все версии Rails 2 используют TMail вместо Mail, поэтому вам нужно переопределить что-то еще, если вы не используете Rails 3.

Надеюсь это поможет!

person Xavier Holt    schedule 10.03.2011

на основе предложения @Xavier's rails 3 я смог заставить его работать в rails 2:

class ActionMailer::Base
  def deliver_with_recipient_filter!(mail = @mail) 
    unless 'production' == Rails.env
      mail.to = mail.to.to_a.delete_if do |to| 
        !to.ends_with?('where-i-work.com')
      end
    end
    unless mail.to.blank?
      deliver_without_recipient_filter!(mail)
    end
  end
  alias_method_chain 'deliver!'.to_sym, :recipient_filter
end
person Teflon Ted    schedule 11.03.2011
comment
Если вы используете aws-ses, вам нужно переопределить AWS::SES::Base вместо ActionMailer::Base. - person blindgaenger; 30.03.2011