I'm basically sending e-mails to user with an attachment (report) file automatically generated with the help of an ActionMailer.

This is my 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

Called from my controller with :

...
  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
...

My 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

The initialization of my observer for my mailer in config/initilizer/my_mailer_observer_initializer.rb :

ReportMailer.register_observer(GeneratedReportObserver)

Thanks for help

有帮助吗?

解决方案

I' managed to find the correct instruction afrer digging very deep into rails library :

So I end up with the following 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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top