8

我想将应用程序触发的所有电子邮件记录到数据库表中,这样我就可以记录哪些电子邮件被发送以及发送给谁。

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

4

2 回答 2

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/initializers/setup_mail.rb

ActionMailer::Base.register_interceptor(MyProjectMailLogger)

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

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

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

于 2013-11-05T11:51:04.667 回答
0

我正在对此进行一些研究,似乎https://github.com/ankane/ahoy_email是完成此任务的好方法。它在内部使用拦截器,就像接受的答案一样。它还与具有许多不同后端的免费事件跟踪库集成。如果你今天开始这样的事情,可能需要考虑。

于 2018-01-27T15:40:27.720 回答