热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在rails发送电子邮件后存储邮件程序类和方法

如何解决《在rails发送电子邮件后存储邮件程序类和方法》经验,为你挑选了1个好方法。

我正在创建一个支持数据库的电子邮件审核系统,以便我可以跟踪电子邮件.棘手的部分是我希望能够通过邮件程序类组织这些并且还能够存储邮件程序方法的名称.

创建邮件程序拦截器或观察者来收集Mail::Message实例中的数据并不困难,但我很好奇是否有办法捕获创建该邮件实例的类和方法名称.

如果可能的话,我宁愿不使用回调.

有任何想法吗?



1> Jared Rader..:

这就是我最终要做的事情......我希望能够以这种方式对这种做法的利弊进行一些反馈.感觉有点难看,但很容易.基本上,我包括在我的邮件程序中使用回调的功能,将类和方法名称元数据附加到Mail::Message对象,以便在我的观察者中可以访问它.我通过在Mail::Message对象上设置实例变量来附加它,然后发送attr_readerMail::Message类,允许我调用mail.mailer_klassmail.mailer_action.

我是这样做的,因为我想Mail::Message在交付后记录对象,这样我就能得到它发送的确切日期,并知道记录的电子邮件应该已成功发送.

邮件:

class MyMailer 

观察员:

class MailAuditor

  def self.delivered_email(mail)
    if mail.multipart?
      body = mail.html_part.decoded
    else
      body = mail.body.raw_source
    end

    Email.create!(
      sender: mail.from,
      recipient: mail.to,
      bcc: mail.bcc,
      cc: mail.cc,
      subject: mail.subject,
      body: body,
      mailer_klass: mail.mailer_klass,
      mailer_action: mail.mailer_action,
      sent_at: mail.date
    )
  end
end

配置/初始化/ mail.rb

ActionMailer::Base.register_observer(MailAuditor)

思考?


推荐阅读
author-avatar
染黑就是黑米粥_343
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有