【问题标题】:Save each email before sending rails 4在发送 rails 4 之前保存每封电子邮件
【发布时间】:2013-11-05 05:40:54
【问题描述】:

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

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

【问题讨论】:

标签: ruby-on-rails-4 actionmailer


【解决方案1】:

我已经通过以下方式解决了这个问题:

在 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)

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

【讨论】:

  • 我必须实现与您的解决方案非常相似的东西,除了我为此使用了 ActionMailer::Base.register_observer(..) 。这很好,但现在我必须实现一种方法来重新发送来自“电子邮件日志”的任何电子邮件,以及所有附件。现在想知道我该怎么做...
【解决方案2】:

我正在对此进行一些研究,似乎https://github.com/ankane/ahoy_email 是实现这一目标的好方法。 uses an interceptor internally 喜欢接受的答案。它还与具有许多不同后端的free event tracking library 集成。如果你今天开始这样的事情,可能需要考虑一下。

【讨论】:

    猜你喜欢
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    • 2013-08-22
    • 1970-01-01
    • 2011-02-08
    • 2016-02-08
    相关资源
    最近更新 更多