解析电子邮件附件w回形针 - 可能没有临时文件?

时间:2010-12-05 07:55:24

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

heroku上的我的rails 3应用程序接收传入的电子邮件。我希望能够接受附件,但无法在没有错误的情况下处理附件。

理想的做法是传递ActionMailer提供的附件。

message_all = Mail.new(params[:message])
 message_all.attachments.each do |a|
 attachments.each do |a|
 .attachments.build(
   :attachment => a
  )
 end
end

错误:NoMethodError (undefined method倒带'#)` 附件是模型,附件是回形针

想法?有没有不同的方法将附件= a传递给回形针?

我尝试了另一种方法,创建一个临时文件:

tempfile = File.new("#{Rails.root.to_s}/tmp/#{a.filename}", "w+")
tempfile << a.body
tempfile.puts
attachments.build(
:attachment => File.open(tempfile.path) )

tempfile的问题是没有扩展的文件“blah”而不是“blah.png”正在打破paperclip,这就是为什么我要避免使用tempfile。并且创建身份错误,imagemagick不知道他们是什么,而不是分机。

非常感谢任何关于此的建议。

1 个答案:

答案 0 :(得分:7)

您使用的方法存在的问题是它们不包含回形针的所有必要信息,如内容类型和原始文件名。我曾经写了一篇blog post关于此问题,以及如何伪造格式并使用电子邮件附件作为回形针附件。

最重要的是:

file = StringIO.new(attachment)
file.class.class_eval { attr_accessor :original_filename, :content_type }
file.original_filename = attachment.filename
file.content_type = attachment.mime_type