3 Stimmen

Wie kann man ausgehende E-Mail-Adressen mit rails 2.x actionmailer filtern/blockieren?

Für nicht produktive Rails 2.x-Umgebungen möchte ich alle ausgehenden E-Mails blockieren/filtern, die nicht an Personen in meiner Organisation adressiert sind (z. B. "*@where-i-work.com").

Bitte beachten Sie, dass ich E-Mails nicht vollständig blockieren möchte - ich weiß, dass ich sie im Testmodus einfach in die Protokolle schreiben kann - aber ich möchte, dass E-Mails an interne Mitarbeiter zugestellt werden.

Danke.

3voto

Xavier Holt Punkte 14321

Sie könnten versuchen, die Mail::Message.deliver Funktion in Ihrer environment.rb-Datei - etwa so (nicht getestet - nur Demo-Code!):

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

Beachten Sie, dass dieser Id für Rails 3 - ich glaube, alle Versionen von Rails 2 verwenden TMail anstelle von Mail, so müssen Sie etwas anderes überschreiben, wenn Sie nicht mit Rails 3 sind.

Ich hoffe, das hilft!

2voto

Teflon Ted Punkte 8486

Basierend auf @Xavier's rails 3 Vorschlag konnte ich es in rails 2 zum Laufen bringen:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X