Me sorprende lo poco que hay en la documentación de Rails sobre esto.
Básicamente, ActionMailer in Rails 3 introduce el uso de interceptores (llamados antes de enviar el mensaje) y observadores (después de enviar el mensaje).
Para configurar un observador, añada lo siguiente a un inicializador:
class MailObserver
def self.delivered_email(message)
# Do whatever you want with the message in here
end
end
ActionMailer::Base.register_observer(MailObserver)
Ahora, el método delivered_email
se ejecutará cada vez que la aplicación envía un correo electrónico. Sin embargo, solo tendrá acceso al mensaje real Mail
.
Para registrar un interceptor en su lugar, hacer lo mismo que anteriormente, la sustitución de register_observer
con register_interceptor
, y cambiar el nombre del método self.delivered_email
-self.delivering_email
.
This Railscast fue la mejor fuente que pude encontrar para obtener información sobre esto (solo hablan de interceptores, pero el concepto es el mismo para los observadores).
Gracias dmarkow, esto es exactamente lo que estaba buscando, y como dijiste, la información es escasa, especialmente cuando no sabes que el término "Interceptores" es uno que debes buscar. – thomasfedb
Esto genera algunas preguntas más: (1) ¿Cómo podría decir a qué correo y qué método se utilizó, (2) ¿Cómo observaría la falla y (3) ¿Cómo lo probaría, incluido el caso de falla? – user1158559
Puedo confirmar que esto también funciona en Rails 4 –