2012-03-14 13 views
11

W środowisku programistycznym używam kopii produkcyjnej bazy danych podczas testowania lokalnego. Z powodów zarówno testowania, jak i po prostu dla ochrony przed wysyłaniem wiadomości e-mail testowych/dev do prawdziwych użytkowników, jaki jest najlepszy sposób na przesłonięcie adresu e-mail w trybie deweloperskim?Zastępowanie poczty programu ActionMailer na adres w środowisku programistycznym

Wiem, że potrafię pisać logikę w każdym mailerze, ale mam kilka i byłoby miło umieścić to wszystko w jednym miejscu. Czy mogę jakoś przesłonić metodę mail(), aby parametr :to zawsze wskazywał podany przeze mnie adres e-mail?

Odpowiedz

1

Ty could do domyślny z

class UserMailer < ActionMailer::Base 
    default :to=> "[email protected]" 
end 

a następnie wprowadź adres opcja w metodach. W ten sposób domyślnie ustawi się :to. Inny pomysł miałem było nieco więcej:

class UserMailer < ActionMailer::Base 
    attr_accessor :email_address 

    def initialize 
    if RAILS_ENV == "development" 
     @email_address = "[email protected]" 
    end 
    end 
end 

Wymagałoby to na ustawienie nowego adresu w kodzie, ale byłoby zastępowane za każdym razem w Rozwoju.

3

Co chciałbym zrobić, to skonfigurować Action Mailer w środowisku programowania do wykorzystania mailtrap.

27

Używam ActionMailer interceptor, więc wszystkie wiadomości wysłane w środowiskach programistycznych lub testowych są wysyłane na ten sam adres. W ten sposób:

# config/initializers/override_mail_recipient.rb 
if Rails.env.development? or Rails.env.test? 
    class OverrideMailRecipient 
    def self.delivering_email(mail) 
     mail.to = '[email protected]' 
    end 
    end 
    ActionMailer::Base.register_interceptor(OverrideMailRecipient) 
end 
+0

To jest całkiem schludne w rzeczywistości. Dzięki za opis! – Calvin

Powiązane problemy