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

Bar*_*ran 6 actionmailer ruby-on-rails-4

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

请建议我最好的解决方案.

Bar*_*ran 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
Run Code Online (Sandbox Code Playgroud)

在config/initalizers/setup_mail.rb中

ActionMailer::Base.register_interceptor(MyProjectMailLogger)
Run Code Online (Sandbox Code Playgroud)

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

config.autoload_paths += %W(#{config.root}/lib)
Run Code Online (Sandbox Code Playgroud)

好极了!!我记录了我的电子邮件.