我希望将应用程序中所有触发的电子邮件跟踪到数据库表中,以便我可以记录发送电子邮件的对象以及发送给谁。
请建议我提供最好的解决方案。
答案 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集成。如果你今天开始这样的事情,可能需要考虑。