Сохраните каждое письмо перед отправкой rails 4


Я хочу отслеживать все инициированные сообщения электронной почты приложением в таблице БД, так что я могу иметь журнал, какие сообщения электронной почты отправляются и кому.

Пожалуйста, предложите мне наилучшее возможное решение.

2 5

2 ответа:

Я решил это следующим образом:

Создал класс в каталоге lib

class MyProjectMailLogger

  def self.delivering_email(message)
   @to = message.to.to_s
   @subject = message.subject.to_s
   @message = message.body.to_s
   EmailQueue.create!(:receipient_email => @to, :subject => @subject, :message => @message, :email_status_id => 3)
 end

end

В config / initalizers / setup_mail.rb

ActionMailer::Base.register_interceptor(MyProjectMailLogger)

Возможно, вам потребуется добавить в приложение следующую строку.rb файл как его не включают файлы из каталога lib:

config.autoload_paths += %W(#{config.root}/lib)

Ура!! и я регистрировал свои электронные письма.

Я провожу некоторые исследования по этому вопросу, и кажется, что https://github.com/ankane/ahoy_email является хорошим камнем для достижения этой цели. Он использует перехватчик внутренне, как принятый ответ. Он также интегрируется с бесплатной библиотекой отслеживания событий , которая имеет несколько различных бэкэндов. Может быть, стоит подумать, если вы начинаете что-то подобное сегодня.