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

编程之家收集整理的这篇文章主要介绍了ruby-on-rails – 解析电子邮件附件w回形针 – 可能没有临时文件?编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在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传递给回形针?

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

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

总结

以上是编程之家为你收集整理的ruby-on-rails – 解析电子邮件附件w回形针 – 可能没有临时文件?全部内容,希望文章能够帮你解决ruby-on-rails – 解析电子邮件附件w回形针 – 可能没有临时文件?所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入编程之家官方QQ群:1065694478

猜你在找的Ruby相关文章

以下代码导致我的问题: class Foo def initialize(n=0) @n = n end attr_accessor :n def inc n+=1 end end 调用Foo.new.inc引发NoMethodError:未定义的方法”为nil:NilClass 调用Foo.new.n返回0 为什么Foo.new.inc引发错误?我可以毫无
这是我的spec文件,当为上下文添加测试“而不是可单独更新用户余额”时,我得到以下错误. require 'spec_helper' describe Sale do context 'after_commit' do context 'assignable' do sale = FactoryGirl.create(:sale, earned_cents: 10
我有一个拦截器:DevelopmentMailInterceptor和一个启动拦截器的inititializer setup_mail.rb. 但我想将它应用于特定的邮件程序(拦截NotificationMailer而不是其他邮件. 所以我在setup_mail.rb中设置: `NotificationMailer.register_interceptor(DevelopmentMailInter
例如,如果我有YAML文件 en: questions: new: 'New Question' other: recent: 'Recent' old: 'Old' 这最终会像json对象一样 { 'questions.new': 'New Question', 'questions.other.recent': 'Recent', 'qu
我听说在RSpec中避免它,let,let !,指定,之前和主题是最佳做法. 关于让,让!之前,如果不使用这些,我该如何执行设置任务? 写这些最佳实践的人实际上只想说“不要使用RSpec”.避免使用核心功能仍然是疯狂的,但仍然认为你可以很好地完成任务.你能链接到这些最佳实践吗?我喜欢阅读它们,看看它们是否合理,或者只是一些j-random-guy的意见. 避免以前和让?什么?真? 我猜,避免指定它
我在Rails中使用MongoDB和mongo_mapper gem,项目足够大.有什么办法可以将数据从Mongoid迁移到 Postgresql吗? 您应该研究一些自动迁移/复制工具,如MoSQL: https://stripe.com/blog/announcing-mosql 此迁移的一个风险策略是将您的代码库转换为使用postgres和所有模型,将您的站点置于维护模式,迁移数据库,部署新代
我运行了代码@transaction = Transaction.new然后我给了它一些值: <Transaction id: nil, debit_uri: "d8hmFJ89CIQUZMBoiPMnvWkQJW/bank_...", credit_uri: "d8hmciqLOg9bCIQUZMBoiPMnvWkQJW/cards...", seller_id: 2, buyer_id: 6,
为什么我会得到“未定义的方法`编码’”? 我怎样才能解决这个问题? 错误信息 NoMethodError (undefined method `encoding' for #<Array:0x000000218f61e8>): app/controllers/messages_controller.rb:255:in `deliver' messages_controller.rb # codi
我有一个rails应用程序,允许您请求邀请注册.根据要求,我保存您的电子邮件并向您发送一封电子邮件,表示感谢“您已请求加入”.由于某种原因,UserMailer.request(@request).deliver行在RequestsController中创建了这个错误ArgumentError #create – 错误的参数个数(0表示1) 有任何想法吗? 请求控制器 class Requests
我看到了这个… How to convert activerecord results into a array of hashes 并且想要创建一个允许我将任何作用域或非作用域记录集转换为散列数组的方法.我把它添加到我的模型中: def self.to_hash to_a.map(&:serializable_hash) end 但是,我收到此错误. NameError: undefin
我有一系列哈希: [{:foo => 1, :bar => 2}, {:foo => 2, :bar => 4} ...] 和一个整数数组: [3, 6] 我希望将整数数组和散列中的值组合起来,结果如下: [{:foo => 1, :bar => 2, :baz => 3}, {:foo => 2, :bar => 4, :baz => 6}] 我目前正在这样做: myArrayOfHashes.
我目前正在亚马逊上部署我的Rails应用程序,我面临着环境变量的问题. 我正在开发和测试中使用dotenv gem,它在尝试访问我的环境变量时工作正常,但在生产中它似乎不起作用.我读到dotenv gem并不适合生产.我必须设置近20个不同的环境变量,包括API密钥等,我正在使用rubber / capistrano进行部署. 我怎样才能以干净的方式工作? 你可以使用 figaro gem.我正在