Ruby on Rails中解析邮件附件时,为何经常遇到没有临时文件的问题?

2026-04-11 19:171阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计365个文字,预计阅读时间需要2分钟。

Ruby on Rails中解析邮件附件时,为何经常遇到没有临时文件的问题?

我在Heroku上的Rails 3应用接收传入的电子邮件。希望能够接收附件,但无法在没有错误的情况下处理附件。想的方法是递归调用ActionMailer提供的附件。`message.all=Mail.new(params[:message])`

我在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 methodrewind’for#)`
附件是模型,附件是回形针

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

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

Ruby on Rails中解析邮件附件时,为何经常遇到没有临时文件的问题?

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不知道它们是什么而不是ext.

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

您使用的方法的问题是它们不包含回形针的所有必要信息,如内容类型和原始文件名.我曾经写了一篇关于这篇文章的 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

本文共计365个文字,预计阅读时间需要2分钟。

Ruby on Rails中解析邮件附件时,为何经常遇到没有临时文件的问题?

我在Heroku上的Rails 3应用接收传入的电子邮件。希望能够接收附件,但无法在没有错误的情况下处理附件。想的方法是递归调用ActionMailer提供的附件。`message.all=Mail.new(params[:message])`

我在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 methodrewind’for#)`
附件是模型,附件是回形针

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

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

Ruby on Rails中解析邮件附件时,为何经常遇到没有临时文件的问题?

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不知道它们是什么而不是ext.

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

您使用的方法的问题是它们不包含回形针的所有必要信息,如内容类型和原始文件名.我曾经写了一篇关于这篇文章的 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