我是Rails的新手,因此抱歉愚蠢的问题。为了发送电子邮件,我使用ActionMailer和Rails 2.3.5。语法如下
deliver_maintest1
deliver_maintest2
在ActionMailer实例模型中我有
def maintest1
端
def maintest2
端
内部定义我设置了收件人,主题,标题......据我所知,没有任何明确定义的方法邮件,这实际上是发送电子邮件。电子邮件从def maintest1和maintest2发送。问题是在发送电子邮件之前,我需要定义几个计数器,发送了多少个电子邮件,认为是maintest1和maintest2。现在考虑到我有几十个像主测试一样的defs。所以我需要一个共同的地方为所有这些defs。在您看来,什么是最好的解决方案?
谢谢!
答案 0 :(得分:2)
在轨道3及以上,您可以使用observer
。这些在每次邮件传递之后被调用,通过消息对象传递。您只需要实现delivered_email
类方法并注册它。
class EmailObserver
def self.delivered_email(message)
# do something with message
end
end
然后,用
将其挂钩到邮件中Mail.register_observer(EmailObserver)
这不适用于rails 2.x,它不使用mail gem(它使用来自ruby标准库的tmail。)
在2.3.x上,我会尝试像
这样的东西class MyMailer < ActionMailer::Base
def deliver!(mail=@mail)
super
# do your logging here
end
end
答案 1 :(得分:1)
您将调用“Mailer.deliver_maintest”将邮件发送给任何人,计算您每次拨打“Mailer.deliver_maintest”时发送特定电子邮件的时间,以便跟踪它。
您可以将该计数器存储在数据库或某处。这样的事情。
// Some lines of code to Update the counter for the mailer Mailer.deliver_maintest
您还可以使用PostMark等第三方电子邮件工具发送您的电子邮件(与他们一起,您可以将每封电子邮件与标签相关联,我通常只使用这些标签来跟踪发送的电子邮件)。