paperclip + ActionMailer - 添加附件?

时间:2010-12-05 01:46:23

标签: ruby-on-rails ruby-on-rails-3 paperclip actionmailer

我有一个回形针文件,我想将其添加为我的电子邮件的附件....

类UserMailer<的ActionMailer :: Base的     def XXXXXX_notification(记录)       @record = record

  attachments ??? How to add a paperclip file?

  mail( :to => "#{record.email}", 
        :subject => "XXXXXXXX"
        )
end

谷歌似乎没有关于这个主题的内容,如果你有任何想法,我很乐意听到它:)

由于

更新

  @comment.attachments.each do |a|
    tempfile = File.new("#{Rails.root.to_s}/tmp/#{a.attachment_file_name}", "w")
    tempfile << open(a.authenticated_url())
    tempfile.puts
    attachments[a.attachment_file_name] = File.read("#{Rails.root.to_s}/tmp/#{a.attachment_file_name}")
    # Delete it tempfile
    #File.delete("#{Rails.root.to_s}/tmp/#{a.filename}")
  end

2 个答案:

答案 0 :(得分:9)

已经回答了,但我只是想分享一种略有不同的方式:

这是我的模特报告。我正在使用Paperclip。

class Report < ActiveRecord::Base
  has_attached_file :pdf_file
  ...
end

这是我的邮件ReportMailer

class ReportMailer < ActionMailer::Base
  def monthly_report_email(emails, report)
    attachments[report.pdf_file_file_name] = File.read(report.pdf_file.path)
    mail(:to => emails, :subject => 'monthly report')
  end
end

答案 1 :(得分:4)

从Ruby on Rails指南(只能通过Bing访问):

http://guides.rubyonrails.org/action_mailer_basics.html#sending-emails-with-attachments

剩下的就是将附件(如果在S3中)下载到file对象或访问它,它将存储在本地。尝试使用open-uri