我需要记录通过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.
概述如下
将邮件存储在数据库中可以按周期完成(例如一小时,一天或一周),这取决于您想要的方式。这样,您可以将作为后台作业运行,它将查找日志文件并提取所需的内容。
做同样的一个更好的方法是,你附加一个回调函数到邮件函数,这样每当你发送邮件,即你调用交付函数,你的回调函数被调用自己,从尾部查找日志到某一点,然后提取内容,然后存储在相同的
回调函数可以是一个简单的ruby脚本,它打开日志并读取其内容,然后您可以随意使用它并以您想要的方式存储它。