我想将应用程序触发的所有电子邮件记录到数据库表中,这样我就可以记录哪些电子邮件被发送以及发送给谁。
请建议我最好的解决方案。
我已经使用以下方式解决了这个问题:
在 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/initializers/setup_mail.rb
ActionMailer::Base.register_interceptor(MyProjectMailLogger)
您可能需要在 application.rb 文件中添加以下行,因为它不包含 lib 目录中的文件:
config.autoload_paths += %W(#{config.root}/lib)
耶!!我记录了我的电子邮件。
我正在对此进行一些研究,似乎https://github.com/ankane/ahoy_email是完成此任务的好方法。它在内部使用拦截器,就像接受的答案一样。它还与具有许多不同后端的免费事件跟踪库集成。如果你今天开始这样的事情,可能需要考虑。