Ruby on rails 使用RubyonRails从数据库读取二进制数据并用作邮件附件

Ruby on rails 使用RubyonRails从数据库读取二进制数据并用作邮件附件,ruby-on-rails,Ruby On Rails,我在我的客户机上读取文件的内容,base64对其进行编码,通过JSON将其发送到我的Rails后端,base64对其进行解码并将数据存储在数据库中。然后我尝试从Rails发送一封电子邮件,并将数据作为附件 以下是我对二进制数据的列定义: t.column :binarydata, :binary, :limit => 10.megabytes, :null => false 这是我的邮件模板: class MYMailer < ActionMailer::Base def mail(f

我在我的客户机上读取文件的内容,base64对其进行编码,通过JSON将其发送到我的Rails后端,base64对其进行解码并将数据存储在数据库中。然后我尝试从Rails发送一封电子邮件,并将数据作为附件

以下是我对二进制数据的列定义:

t.column :binarydata, :binary, :limit => 10.megabytes, :null => false
这是我的邮件模板:

class MYMailer < ActionMailer::Base
  def mail(from, to, cc, bcc, subject, message, files=[], sent_at = Time.now)
    @subject = subject
    @recipients = to
    @from = from
    @cc = cc
    @bcc = bcc
    @sent_on = sent_at
    @body["message"] = message
    @headers = {}

    # attache files
    files.each do |file|
      attachment file.mimetype do |a|
        a.body = file.binarydata
        a.filename = file.filename
      end
    end

  end
end
下面是解析输入JSON并将数据存储在数据库中的代码:

attachement_json = params[:attachement]
attachement_json = attachement_json.gsub(/\n/, "\\n")
attachement = AttachementItem.new.from_json(attachement_json)
b64data = Base64.decode64(attachement.binarydata)
attachement.binarydata = b64data
attachement.save
然而,我在电子邮件中收到的附件是垃圾。我不知道这个错误是否在我的客户端,我也在调查这个问题,但是你能看到我的Rails代码中是否有错误吗


谢谢

我的Rails代码很好用!我发现我的错误(不止一个),它们都在我的客户机代码中。很抱歉问:)

附加文件时,
file.mimetype
做什么?它是否为您上传的文件正确设置了mimetype?该文件在数据库中看起来正常吗?您如何确定电子邮件客户端中的文件是垃圾文件?好的,那么您是如何确定的?正确的代码是什么?
attachement_json = params[:attachement]
attachement_json = attachement_json.gsub(/\n/, "\\n")
attachement = AttachementItem.new.from_json(attachement_json)
b64data = Base64.decode64(attachement.binarydata)
attachement.binarydata = b64data
attachement.save