0

我基本上是通過ActionMailer的幫助自動生成附件(報告)文件給用戶發送電子郵件。如何(通過郵件觀察者)在電子郵件發送後刪除臨時(生成的附件)文件?

這是我的應用程序/郵件/ report_mailer.rb:

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

我的應用程序/模型/ 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 

class ReportMailer < ActionMailer::Base 
    default from: "[email protected]_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 

從我的控制器調用

我的郵件程序在config/initilizer/my_mailer_observer_initializer.rb中初始化我的觀察者:

ReportMailer.register_observer(GeneratedReportObserver) 

感謝您的幫助

回答

0

I」設法找到正確的指令afrer挖得很深爲rails library

所以我結束了以下應用程序/模型/ 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 
相關問題