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

时间:2011-04-17 21:38:06

标签: ruby-on-rails ruby-on-rails-3 logging

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

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

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

有什么建议吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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. 更好的方法是,您将回调函数附加到邮件功能,这样无论何时发送邮件,即调用传递函数,回调函数自己被调用,从尾端查找日志到某个点,然后提取内容然后将其存储在同一个中。

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