我基本上是通过ActionMailer自动生成的附件(报告)文件向用户发送电子邮件。
这是我的app / mailer / report_mailer.rb:
class ReportMailer < ActionMailer::Base
default from: "server.email@my_domaine.com"
def generated_report(user, file_name, report_name, file_path)
@user = user
@report_name = report_name
attachments[file_name] = File.read(file_path)
mail(:to => user.email, :subject => "Generated report #{report_name} (automatic message)")
end
end
从我的控制器调用:
...
t = Time.now
file_name = "#{generated_name}_#{t.strftime("%Y-%m-%d_%HH-%M-%Ssec")}_#{t.usec}.xls"
file_path = '/tmp/' + file_name
ReportMailer.generated_report(current_user, file_name, generated_name, file_path).deliver
...
我的app / models / generated_report_observer.rb:
class GeneratedReportObserver < ActiveRecord::Observer
def self.delivered_email(message)
file_path = ????
File.delete file_path if File.exist? file_path
end
end
我的邮件程序的观察者在config / initilizer / my_mailer_observer_initializer.rb中的初始化:
ReportMailer.register_observer(GeneratedReportObserver)
感谢您的帮助
答案 0 :(得分:0)
在深入研究rails library后,我找到了正确的指令:
所以我最终得到了以下app / models / generated_report_observer.rb:
class GeneratedReportObserver < ActiveRecord::Observer
def self.delivered_email(message)
file_path = '/tmp/' + message.attachments[0].filename
File.delete file_path if File.exist? file_path
end
end