记录ActionMailer在数据库中发送电子邮件的最佳方法是什么?

我需要记录通过ActionMailer发送的电子邮件,而简单的文本文件是不够的。 我需要将日志存储在ActiveRecord模型中。 电子邮件发送性能可能会受到影响,但在这种情况下,它是最好的替代方案(因为应用程序会定期访问日志)。

我还需要记录实际发送的内容和相关的错误,而不仅仅是我的控制器传递给ActionMailer的内容(即可能的最低级别实现)。

config.action_mailer.logger似乎是劫持Rails已经存在的机制的理想方式。 但是,根据我的理解,Log4r和默认的Ruby记录器只能输出到文本文件。

有什么建议?

谢谢!

有两种方法可以解决您的问题,因为您也想存储邮件的内容。
在此之前,邮件的典型内容是:

 Sent mail to 123@gmail.com From: abc@xyz.com To: 123@gmail.com Subject: Blah Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Hi, yourself. 

这些概述如下

  1. 根据您的需要,可以定期 (例如一小时,一天或一周)将数据存储在数据库中。 这样,您可以将其作为后台作业运行, 后台作业将查找日志文件并提取所需的内容。

  2. 一个更好的方法是,你可以将一个回调函数附加到邮件函数,这样无论何时发送邮件,即调用deliver函数,你的回调函数都会被自己调用,从中查找日志尾部到某一点,然后提取内容,然后将其存储在同一个点。

回调函数可以是一个简单的ruby脚本,它打开日志并读取其内容,然后您可以使用它并以您想要的方式存储它。