【发布时间】:2015-08-31 23:50:24
【问题描述】:
我有一个表格,内部用户可以请求将信息材料发送给客户。提交表格后,它会向负责将材料实际邮寄给客户的人员发送电子邮件。
现在,我想捕获电子邮件的内容,以便向客户的展示页面添加注释,但我不知道该怎么做。
我看过的一个选项是在MaterialsRequestMailer 中使用after_filter,但调用message.body 会返回一个大字符串,其中的文本比我需要的多,我想避免添加一堆解析逻辑获取消息内容。
基本上,我想要views/materials_request_mailer/send_request_notification.text.erb 模板生成的内容。我查看了http://www.rubydoc.info/github/mikel/mail/Mail/Message,找不到只返回渲染模板内容的方法。有没有办法做到这一点?
如果没有,有没有办法在控制器中手动初始化View,我已经有了要传递给邮件程序的实例变量?这似乎不是一个理想的解决方案,因为我使用的是DelayedJob,并且添加注释的代码将在电子邮件实际发送之前运行。此外,由于DelayedJob,我似乎无法从控制器内直接访问邮件对象(如果我这样做mail = MaterialsRequestMailer.delay.send_request_notification(...),它会将Delayed::Backend::ActiveRecord::Job 的实例分配给mail)。
【问题讨论】:
标签: ruby-on-rails actionmailer delayed-job