发送rails 4之前保存每封电子邮件

时间:2013-11-05 05:40:54

标签: ruby-on-rails-4 actionmailer

我希望将应用程序中所有触发的电子邮件跟踪到数据库表中,以便我可以记录发送电子邮件的对象以及发送给谁。

请建议我提供最好的解决方案。

2 个答案:

答案 0 :(得分:7)

我用以下方法解决了这个问题:

在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)

您可能需要在application.rb文件中添加以下行,因为它不包含lib目录中的文件:

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

耶!!我记录了我的电子邮件。

答案 1 :(得分:0)

我正在对此进行一些研究,似乎https://github.com/ankane/ahoy_email是实现这一目标的好宝石。它uses an interceptor internally就像接受的答案一样。它还与具有许多不同后端的free event tracking library集成。如果你今天开始这样的事情,可能需要考虑。