2011-01-31 26 views
33

Uygulamamda bir e-posta gönderildiğinde bazı kodları çalıştırmak istiyorum. ActionMailer after_filter desteklemediği gibiBir Mailer Observer'ı nasıl oluşturabilirim?

, ben bir gözlemci kullanmak istiyorum.

Raylar dokümanlar ancak ayrıntılı değil, geçerken bu söz.

Teşekkürler! Bu konuda Rails'in belgelerinde olduğu kadar az

cevap

71

şaşırdım.

Temel olarak, raylar 3 ActionMailer (mesaj gönderildikten sonra) (mesajı gönderilmeden önce adlandırılır) önleyicilerin kullanımı ve Gözlemcilerini getirmektedir.

bir başlatıcısı aşağıdakileri ekleyin, bir adet gözlemci kurmak için:

class MailObserver 
    def self.delivered_email(message) 
    # Do whatever you want with the message in here 
    end 
end 

ActionMailer::Base.register_observer(MailObserver) 

Şimdi delivered_email yöntem uygulama bir e-posta gönderir her zaman geçerli olacaktır. Ancak, gerçek Mail mesajına erişebileceksiniz.

register_interceptor ile register_observer değiştirilmesi ve self.delivered_email den self.delivering_email yöntemi adlandırma yerine, bir engelleyici kayıt yukarıdaki ile aynı yapmak için. Bu bilgi için bulabildiğim en iyi kaynaktı (sadece önleyicilerden bahsediyorlar, ancak konsept gözlemciler için aynıdır).

+1

Bu sayede aradığım tam olarak ne olduğunu dmarkow ve dediğin gibi bilgiler dönem "Müdahale" bilmiyorum especialy, kıt aramaya biridir. – thomasfedb

+14

Bu, daha fazla soru ortaya atıyor - (1) Hangi posta makinesine ve hangi yöntemin kullanıldığına nasıl karar verdiniz? (2) Başarısızlığı nasıl gözlemlersiniz? (3) Bu durumu nasıl denersiniz? – user1158559

+1

Bunun da Rays 4'te çalıştığını onaylayabilirim –

İlgili konular